#CC-RL Compiler RL78 Assembler Source #@ CC-RL Version : V1.15.00 [06 Dec 2024] #@ Commmand : #@ -cpu=S3 #@ -S #@ -Olite #@ -I . #@ -asm_path=tmp #@ r_main.c #@ owi.c #@ app_owi_service.c #@ compiled at Tue Sep 15 15:24:24 2026 .EXTERN _memset .PUBLIC _app_owi_read_basic .EXTERN _R_WDT_Restart .EXTERN _OWI_ReadBytesRaw .EXTERN _delay_us .PUBLIC _app_owi_write_basic .EXTERN _OWI_CommandModeRaw .PUBLIC _app_owi_write_t_basic .EXTERN _OWI_T_CommandModeRaw .SECTION .textf,TEXTF .TYPE _app_owi_from_raw@1,function,.LFE1-_app_owi_from_raw@1 _app_owi_from_raw@1: .STACK _app_owi_from_raw@1 = 338 subw sp, #0xFE subw sp, #0x4E movw [sp+0x02], ax pop ax push bc movw de, #0x0148 clrw bc movw ax, sp addw ax, #0x0004 call !!_memset movw ax, [sp+0x00] or a, x bz $.BB@LABEL@1_2 .BB@LABEL@1_1: ; entry.bb6_crit_edge oneb a br $.BB@LABEL@1_3 .BB@LABEL@1_2: ; bb5 clrb a .BB@LABEL@1_3: ; bb6 cmp0 a bnz $.BB@LABEL@1_5 .BB@LABEL@1_4: ; if_then_bb mov [sp+0x04], #0x00 br $.BB@LABEL@1_9 .BB@LABEL@1_5: ; if_break_bb pop de push de mov a, [de] mov [sp+0x04], a mov a, [de+0x01] mov [sp+0x05], a movw ax, [de+0x02] movw [sp+0x06], ax pop bc push bc movw ax, 0x0144[bc] push bc movw bc, sp movw 0x014A[bc], ax pop bc mov a, 0x0146[bc] movw bc, sp mov 0x014A[bc], a clrw bc pop hl push hl br $.BB@LABEL@1_7 .BB@LABEL@1_6: ; bb33 movw ax, sp addw ax, #0x0004 addw ax, bc addw ax, #0x0004 movw [sp+0x00], ax movw ax, hl addw ax, bc addw ax, #0x0004 movw de, ax mov a, [de] mov d, a movw ax, [sp+0x00] xchw ax, de mov [de], a incw bc .BB@LABEL@1_7: ; bb48 movw ax, bc cmpw ax, [hl+0x02] bnc $.BB@LABEL@1_9 .BB@LABEL@1_8: ; bb48 cmpw ax, #0x0140 bc $.BB@LABEL@1_6 .BB@LABEL@1_9: ; bb67 movw ax, sp addw ax, #0x0004 movw bc, ax movw ax, [sp+0x02] movw de, #0x0148 call !!_memcpy addw sp, #0xFE addw sp, #0x4E ret .LFE1: .TYPE _is_long_owi_read@1,function,.LFE2-_is_long_owi_read@1 _is_long_owi_read@1: .STACK _is_long_owi_read@1 = 4 cmpw ax, #0x007F bz $.BB@LABEL@2_2 .BB@LABEL@2_1: ; entry clrb b br $.BB@LABEL@2_3 .BB@LABEL@2_2: ; entry oneb b .BB@LABEL@2_3: ; entry cmpw ax, #0x0077 bz $.BB@LABEL@2_5 .BB@LABEL@2_4: ; entry clrb a br $.BB@LABEL@2_6 .BB@LABEL@2_5: ; entry oneb a .BB@LABEL@2_6: ; entry or a, b ret .LFE2: .TYPE _looks_bad_tail@1,function,.LFE3-_looks_bad_tail@1 _looks_bad_tail@1: .STACK _looks_bad_tail@1 = 8 subw sp, #0x04 cmpw ax, #0x0000 bnz $.BB@LABEL@3_2 .BB@LABEL@3_1: ; entry.bb81_crit_edge oneb a br $.BB@LABEL@3_15 .BB@LABEL@3_2: ; if_break_bb movw hl, ax movw ax, [hl+0x02] movw de, ax cmpw ax, #0x0018 bc $.BB@LABEL@3_1 .BB@LABEL@3_3: ; if_break_bb17 clrb b mov a, b mov [sp+0x03], a movw ax, de addw ax, #0xFFE8 movw [sp+0x00], ax mov a, b mov [sp+0x02], a br $.BB@LABEL@3_13 .BB@LABEL@3_4: ; bb22 movw ax, [sp+0x00] movw bc, ax addw ax, hl addw ax, #0x0004 movw de, ax mov a, [de] mov x, a cmp0 x bz $.BB@LABEL@3_6 .BB@LABEL@3_5: ; bb22.if_break_bb38_crit_edge clrb a br $.BB@LABEL@3_7 .BB@LABEL@3_6: ; if_then_bb35 mov a, [sp+0x02] inc a .BB@LABEL@3_7: ; if_then_bb35 mov [sp+0x02], a inc x bz $.BB@LABEL@3_9 .BB@LABEL@3_8: ; if_break_bb38.if_break_bb48_crit_edge clrb a br $.BB@LABEL@3_10 .BB@LABEL@3_9: ; if_then_bb44 mov a, [sp+0x03] inc a .BB@LABEL@3_10: ; if_then_bb44 mov [sp+0x03], a mov a, [sp+0x02] cmp a, #0x08 bnc $.BB@LABEL@3_1 .BB@LABEL@3_11: ; if_break_bb48 mov a, [sp+0x03] cmp a, #0x08 bnc $.BB@LABEL@3_1 .BB@LABEL@3_12: ; if_break_bb68 incw bc pop ax push bc .BB@LABEL@3_13: ; bb71 movw ax, [sp+0x00] cmpw ax, [hl+0x02] bc $.BB@LABEL@3_4 .BB@LABEL@3_14: ; bb71.bb81_crit_edge clrb a .BB@LABEL@3_15: ; bb81 addw sp, #0x04 ret .LFE3: .TYPE _looks_bad_last_bytes@1,function,.LFE4-_looks_bad_last_bytes@1 _looks_bad_last_bytes@1: .STACK _looks_bad_last_bytes@1 = 8 subw sp, #0x04 cmpw ax, #0x0000 bz $.BB@LABEL@4_13 .BB@LABEL@4_1: ; if_break_bb movw de, ax movw ax, [de+0x02] cmpw ax, #0x0003 bc $.BB@LABEL@4_13 .BB@LABEL@4_2: ; if_break_bb17 addw ax, #0xFFFD movw [sp+0x02], ax oneb a mov [sp+0x00], a clrb c oneb a mov b, a br $.BB@LABEL@4_8 .BB@LABEL@4_3: ; bb22 shrw ax, 8+0x00000 addw ax, [hl+0x02] addw ax, de addw ax, #0x0004 movw hl, ax mov a, [hl] cmp0 a skz .BB@LABEL@4_4: ; if_then_bb38 clrb b .BB@LABEL@4_5: ; if_break_bb39 inc a bz $.BB@LABEL@4_7 .BB@LABEL@4_6: ; if_then_bb45 clrb a mov [sp+0x00], a .BB@LABEL@4_7: ; if_break_bb46 inc c .BB@LABEL@4_8: ; bb49 movw hl, sp mov a, c cmp a, #0x03 bc $.BB@LABEL@4_3 .BB@LABEL@4_9: ; bb55 cmp0 b bnz $.BB@LABEL@4_13 .BB@LABEL@4_10: ; bb55 mov a, [hl] cmp0 a bnz $.BB@LABEL@4_13 .BB@LABEL@4_11: ; bb67 clrb a .BB@LABEL@4_12: ; bb67 addw sp, #0x04 ret .BB@LABEL@4_13: ; bb74 oneb a br $.BB@LABEL@4_12 .LFE4: .TYPE _ends_with_ff_pair@1,function,.LFE5-_ends_with_ff_pair@1 _ends_with_ff_pair@1: .STACK _ends_with_ff_pair@1 = 4 cmpw ax, #0x0000 bz $.BB@LABEL@5_5 .BB@LABEL@5_1: ; if_break_bb movw de, ax movw ax, [de+0x02] movw bc, ax cmpw ax, #0x0002 bc $.BB@LABEL@5_5 .BB@LABEL@5_2: ; if_break_bb17 addw ax, de addw ax, #0x0002 movw hl, ax mov a, [hl] inc a bnz $.BB@LABEL@5_4 .BB@LABEL@5_3: ; bb32 movw ax, bc addw ax, de addw ax, #0x0003 movw de, ax mov a, [de] inc a bz $.BB@LABEL@5_5 .BB@LABEL@5_4: ; bb46 clrb a ret .BB@LABEL@5_5: ; bb53 oneb a ret .LFE5: .TYPE _needs_retry_for_long_read@1,function,.LFE6-_needs_retry_for_long_read@1 _needs_retry_for_long_read@1: .STACK _needs_retry_for_long_read@1 = 8 push bc push ax movw ax, bc call $!_is_long_owi_read@1 cmp0 a bz $.BB@LABEL@6_9 .BB@LABEL@6_1: ; if_break_bb movw ax, [sp+0x00] or a, x bnz $.BB@LABEL@6_3 .BB@LABEL@6_2: ; if_break_bb.bb88_crit_edge oneb a br $.BB@LABEL@6_10 .BB@LABEL@6_3: ; if_break_bb23 pop de push de mov a, [de] cmp0 a bz $.BB@LABEL@6_2 .BB@LABEL@6_4: ; if_break_bb39 mov a, [de+0x01] cmp0 a bnz $.BB@LABEL@6_2 .BB@LABEL@6_5: ; if_break_bb49 pop hl push hl movw ax, [sp+0x02] cmpw ax, [hl+0x02] bh $.BB@LABEL@6_2 .BB@LABEL@6_6: ; if_break_bb59 movw ax, hl call $!_looks_bad_tail@1 cmp0 a bnz $.BB@LABEL@6_2 .BB@LABEL@6_7: ; if_break_bb68 movw ax, [sp+0x00] call $!_looks_bad_last_bytes@1 cmp0 a bnz $.BB@LABEL@6_2 .BB@LABEL@6_8: ; if_break_bb77 movw ax, [sp+0x00] call $!_ends_with_ff_pair@1 cmp0 a bnz $.BB@LABEL@6_2 .BB@LABEL@6_9: ; if_break_bb86 clrb a .BB@LABEL@6_10: ; bb88 addw sp, #0x04 ret .LFE6: .TYPE _app_owi_read_basic,function,.LFE7-_app_owi_read_basic _app_owi_read_basic: .STACK _app_owi_read_basic = 340 subw sp, #0xFE subw sp, #0x52 movw [sp+0x06], ax mov a, c mov [sp+0x02], a movw ax, de movw [sp+0x04], ax call !!_R_WDT_Restart movw ax, sp addw ax, #0x0008 movw [sp+0x00], ax movw de, ax mov a, [sp+0x02] mov c, a movw ax, [sp+0x04] call !!_OWI_ReadBytesRaw call !!_R_WDT_Restart movw ax, [sp+0x04] movw bc, ax movw ax, [sp+0x00] call $!_needs_retry_for_long_read@1 cmp0 a bz $.BB@LABEL@7_5 .BB@LABEL@7_1: ; if_then_bb call !!_R_WDT_Restart clrw bc movw ax, #0x0BB8 call !!_delay_us call !!_R_WDT_Restart movw ax, sp addw ax, #0x0008 movw [sp+0x00], ax movw de, ax mov a, [sp+0x02] mov c, a movw ax, [sp+0x04] call !!_OWI_ReadBytesRaw call !!_R_WDT_Restart movw ax, [sp+0x04] movw bc, ax movw ax, [sp+0x00] call $!_needs_retry_for_long_read@1 cmp0 a bz $.BB@LABEL@7_5 .BB@LABEL@7_2: ; bb mov a, [sp+0x08] cmp0 a bz $.BB@LABEL@7_5 .BB@LABEL@7_3: ; bb25 mov a, [sp+0x09] cmp0 a bnz $.BB@LABEL@7_5 .BB@LABEL@7_4: ; if_then_bb45 mov [sp+0x08], #0x00 mov [sp+0x09], #0x01 movw ax, #0xFFFE movw bc, sp movw 0x014C[bc], ax movw bc, sp mov 0x014E[bc], #0xFE .BB@LABEL@7_5: ; if_break_bb50 movw ax, sp addw ax, #0x0008 movw bc, ax movw ax, [sp+0x06] call $!_app_owi_from_raw@1 addw sp, #0xFE addw sp, #0x52 ret .LFE7: .TYPE _app_owi_write_basic,function,.LFE8-_app_owi_write_basic _app_owi_write_basic: .STACK _app_owi_write_basic = 340 subw sp, #0xFE subw sp, #0x50 movw [sp+0x04], ax mov a, c mov [sp+0x01], a push de pop hl mov a, b mov [sp+0x00], a movw ax, sp addw ax, #0x0006 movw [sp+0x02], ax movw de, ax pop bc push bc mov a, [sp+0x00] mov c, a movw ax, hl call !!_OWI_CommandModeRaw movw ax, [sp+0x02] movw bc, ax movw ax, [sp+0x04] call $!_app_owi_from_raw@1 addw sp, #0xFE addw sp, #0x50 ret .LFE8: .TYPE _app_owi_write_t_basic,function,.LFE9-_app_owi_write_t_basic _app_owi_write_t_basic: .STACK _app_owi_write_t_basic = 340 subw sp, #0xFE subw sp, #0x50 movw [sp+0x04], ax mov a, c mov [sp+0x01], a push de pop hl mov a, b mov [sp+0x00], a movw ax, sp addw ax, #0x0006 movw [sp+0x02], ax movw de, ax pop bc push bc mov a, [sp+0x00] mov c, a movw ax, hl call !!_OWI_T_CommandModeRaw movw ax, [sp+0x02] movw bc, ax movw ax, [sp+0x04] call $!_app_owi_from_raw@1 addw sp, #0xFE addw sp, #0x50 ret .LFE9: