summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/CARD_arm9.s1782
-rw-r--r--asm/CTRDG_arm9.s3238
-rw-r--r--asm/MATH_arm9.s320
-rw-r--r--asm/PM_arm9.s1125
-rw-r--r--asm/RTC_arm9.s1028
-rw-r--r--asm/STD_arm9.s17117
-rw-r--r--asm/WM_arm9.s3744
-rw-r--r--asm/rom2.s151
-rw-r--r--asm/secure.s10
-rw-r--r--asm/unk_02000E0C.s2
-rw-r--r--asm/unk_020023C0.s16680
-rw-r--r--asm/unk_02006864.s2
-rw-r--r--asm/unk_020C9C0C.s (renamed from asm/FUN_020C9C0C.s)511
-rw-r--r--global.inc67
-rw-r--r--pokediamond.lcf11
-rw-r--r--undefined_syms.txt7
16 files changed, 36787 insertions, 9008 deletions
diff --git a/asm/CARD_arm9.s b/asm/CARD_arm9.s
new file mode 100644
index 00000000..9756ce4b
--- /dev/null
+++ b/asm/CARD_arm9.s
@@ -0,0 +1,1782 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start CARD_UnlockBackup
+CARD_UnlockBackup: ; 0x020D66A0
+ ldr ip, _020D66AC ; =CARDi_UnlockResource
+ mov r1, #0x2
+ bx r12
+ .balign 4
+_020D66AC: .word CARDi_UnlockResource
+
+ arm_func_start CARD_LockBackup
+CARD_LockBackup: ; 0x020D66B0
+ ldr ip, _020D66BC ; =CARDi_LockResource
+ mov r1, #0x2
+ bx r12
+ .balign 4
+_020D66BC: .word CARDi_LockResource
+
+ arm_func_start CARD_UnlockRom
+CARD_UnlockRom: ; 0x020D66C0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_UnlockCard
+ mov r0, r4
+ mov r1, #0x1
+ bl CARDi_UnlockResource
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start CARD_LockRom
+CARD_LockRom: ; 0x020D66E0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r1, #0x1
+ bl CARDi_LockResource
+ mov r0, r4
+ bl OS_TryLockCard
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start CARD_GetResultCode
+CARD_GetResultCode: ; 0x020D6700
+ ldr r0, _020D6710 ; =0x021D55C0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D6710: .word 0x021D55C0
+
+ arm_func_start FUN_020D6714
+FUN_020D6714: ; 0x020D6714
+ ldr r0, _020D672C ; =0x021D55C0
+ ldr r0, [r0, #0x114]
+ ands r0, r0, #0x4
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+ .balign 4
+_020D672C: .word 0x021D55C0
+
+ arm_func_start CARDi_WaitAsync
+CARDi_WaitAsync: ; 0x020D6730
+ stmdb sp!, {r4-r6,lr}
+ ldr r6, _020D6788 ; =0x021D55C0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x114]
+ mov r5, r0
+ ands r0, r1, #0x4
+ beq _020D6764
+ add r4, r6, #0x10c
+_020D6750:
+ mov r0, r4
+ bl OS_SleepThread
+ ldr r0, [r6, #0x114]
+ ands r0, r0, #0x4
+ bne _020D6750
+_020D6764:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D676C: ; 0x020D676C
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D6788: .word 0x021D55C0
+
+ arm_func_start CARD_Enable
+CARD_Enable: ; 0x020D678C
+ ldr r1, _020D6798 ; =0x021D555C
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020D6798: .word 0x021D555C
+
+ arm_func_start CARD_CheckEnabled
+CARD_CheckEnabled: ; 0x020D679C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl CARD_IsEnabled
+_020D67A8: ; 0x020D67A8
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CARD_IsEnabled
+CARD_IsEnabled:
+ ldr r0, _020D67D4 ; =0x021D555C
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D67D4: .word 0x021D555C
+
+ arm_func_start CARDi_InitCommon
+CARDi_InitCommon: ; 0x020D67D8
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ ldr r4, _020D68B8 ; =0x021D55C0
+ ldr r1, _020D68BC ; =0x021D5560
+ mvn r2, #0x2
+ mov r0, #0x0
+ str r2, [r4, #0x8]
+ mov r2, #0x60
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x18]
+ str r1, [r4, #0x0]
+ bl MIi_CpuClearFast
+ ldr r0, _020D68BC ; =0x021D5560
+ mov r1, #0x60
+ bl DC_FlushRange
+ ldr r0, _020D68C0 ; =0x027FFC40
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x2
+ beq _020D6834
+ ldr r0, _020D68C4 ; =0x027FFE00
+ ldr r1, _020D68C8 ; =0x027FFA80
+ mov r2, #0x160
+ bl MI_CpuCopy8
+_020D6834:
+ mov r2, #0x0
+ str r2, [r4, #0x14]
+ ldr r0, [r4, #0x14]
+ mov r1, #0x4
+ str r0, [r4, #0x10]
+ str r2, [r4, #0x110]
+ ldr r3, [r4, #0x110]
+ mov r0, #0x400
+ str r3, [r4, #0x10c]
+ str r1, [r4, #0x108]
+ str r0, [sp, #0x0]
+ ldr r12, [r4, #0x108]
+ ldr r1, _020D68CC ; =CARDi_TaskThread
+ ldr r3, _020D68D0 ; =0x021D5BE0
+ add r0, r4, #0x44
+ str r12, [sp, #0x4]
+ bl OS_CreateThread
+ add r0, r4, #0x44
+ bl OS_WakeupThreadDirect
+ ldr r1, _020D68D4 ; =CARDi_OnFifoRecv
+ mov r0, #0xb
+ bl PXI_SetFifoRecvCallback
+ ldr r0, _020D68C0 ; =0x027FFC40
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x2
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ mov r0, #0x1
+ bl CARD_Enable
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D68B8: .word 0x021D55C0
+_020D68BC: .word 0x021D5560
+_020D68C0: .word 0x027FFC40
+_020D68C4: .word 0x027FFE00
+_020D68C8: .word 0x027FFA80
+_020D68CC: .word CARDi_TaskThread
+_020D68D0: .word 0x021D5BE0
+_020D68D4: .word CARDi_OnFifoRecv
+
+ arm_func_start CARDi_UnlockResource
+CARDi_UnlockResource: ; 0x020D68D8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020D6978 ; =0x021D55C0
+ mov r7, r0
+ mov r6, r1
+ bl OS_DisableInterrupts
+ mov r1, r5
+ mov r4, r0
+ ldr r0, [r1, #0x8]
+ cmp r0, r7
+ bne _020D6910
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ bne _020D6918
+_020D6910:
+ bl OS_Terminate
+ b _020D6958
+_020D6918:
+ ldr r0, [r5, #0x18]
+ cmp r0, r6
+ beq _020D6928
+ bl OS_Terminate
+_020D6928:
+ ldr r0, [r5, #0xc]
+ sub r0, r0, #0x1
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ bne _020D6958
+ mvn r0, #0x2
+ str r0, [r5, #0x8]
+ mov r1, #0x0
+ add r0, r5, #0x10
+ str r1, [r5, #0x18]
+ bl OS_WakeupThread
+_020D6958:
+ ldr r1, [r5, #0x0]
+ mov r2, #0x0
+ mov r0, r4
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D6978: .word 0x021D55C0
+
+ arm_func_start CARDi_LockResource
+CARDi_LockResource: ; 0x020D697C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020D6A14 ; =0x021D55C0
+ mov r7, r0
+ mov r6, r1
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x8]
+ mov r4, r0
+ cmp r1, r7
+ bne _020D69B8
+ ldr r0, [r5, #0x18]
+ cmp r0, r6
+ beq _020D69E8
+ bl OS_Terminate
+ b _020D69E8
+_020D69B8:
+ ldr r0, [r5, #0x8]
+ mvn r8, #0x2
+ cmp r0, r8
+ beq _020D69E0
+ add r9, r5, #0x10
+_020D69CC:
+ mov r0, r9
+ bl OS_SleepThread
+ ldr r0, [r5, #0x8]
+ cmp r0, r8
+ bne _020D69CC
+_020D69E0:
+ str r7, [r5, #0x8]
+ str r6, [r5, #0x18]
+_020D69E8:
+ ldr r1, [r5, #0xc]
+ mov r0, r4
+ add r1, r1, #0x1
+ str r1, [r5, #0xc]
+ ldr r1, [r5, #0x0]
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020D6A14: .word 0x021D55C0
+
+ arm_func_start CARDi_SetTask
+CARDi_SetTask: ; 0x020D6A18
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020D6A5C ; =0x021D55C0
+ mov r5, r0
+ ldr r1, [r4, #0x108]
+ add r0, r4, #0x44
+ bl OS_SetThreadPriority
+ add r0, r4, #0x44
+ str r0, [r4, #0x104]
+ str r5, [r4, #0x40]
+ ldr r1, [r4, #0x114]
+ orr r1, r1, #0x8
+ str r1, [r4, #0x114]
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D6A5C: .word 0x021D55C0
+
+ arm_func_start FUN_020D6A60
+FUN_020D6A60: ; 0x020D6A60
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D6D60 ; =0x021D55C0
+ mov r5, r0
+ ldr r4, [r1, #0x0]
+ mov r1, #0x0
+ add r0, r4, #0x18
+ mov r2, #0x48
+ bl MI_CpuFill8
+_020D6A84: ; 0x020D6A84
+ cmp r5, #0x0
+ str r5, [r4, #0x4]
+ mov r0, #0x3f
+ addeq sp, sp, #0x4
+ str r0, [r4, #0x4c]
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ mov r0, r5, asr #0x8
+ and r0, r0, #0xff
+ mov r2, #0x1
+ mov r3, r2, lsl r0
+ and r1, r5, #0xff
+ str r3, [r4, #0x18]
+ mov r0, #0xff
+ strb r0, [r4, #0x48]
+ cmp r1, #0x1
+ bne _020D6B80
+ cmp r3, #0x200
+ beq _020D6AE4
+ cmp r3, #0x2000
+ beq _020D6B04
+ cmp r3, #0x10000
+ beq _020D6B28
+ b _020D6D38
+_020D6AE4:
+ mov r0, #0x10
+ str r0, [r4, #0x20]
+ str r2, [r4, #0x24]
+ mov r0, #0x5
+ str r0, [r4, #0x28]
+ mov r0, #0xf0
+ strb r0, [r4, #0x48]
+ b _020D6B48
+_020D6B04:
+ mov r0, #0x20
+ str r0, [r4, #0x20]
+ mov r0, #0x2
+ str r0, [r4, #0x24]
+ mov r0, #0x5
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ strb r0, [r4, #0x48]
+ b _020D6B48
+_020D6B28:
+ mov r0, #0x80
+ str r0, [r4, #0x20]
+ mov r0, #0x2
+ str r0, [r4, #0x24]
+ mov r0, #0xa
+ str r0, [r4, #0x28]
+ mov r0, #0x0
+ strb r0, [r4, #0x48]
+_020D6B48:
+ ldr r0, [r4, #0x20]
+ add sp, sp, #0x4
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x40
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x100
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x200
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D6B80:
+ cmp r1, #0x2
+ bne _020D6CD8
+ cmp r3, #0x100000
+ bhi _020D6BB8
+ cmp r3, #0x100000
+ bhs _020D6BD8
+ cmp r3, #0x40000
+ bhi _020D6BAC
+ cmp r3, #0x40000
+ beq _020D6BD8
+ b _020D6D38
+_020D6BAC:
+ cmp r3, #0x80000
+ beq _020D6BD8
+ b _020D6D38
+_020D6BB8:
+ cmp r3, #0x200000
+ bhi _020D6BCC
+ cmp r3, #0x200000
+ beq _020D6C10
+ b _020D6D38
+_020D6BCC:
+ cmp r3, #0x800000
+ beq _020D6C48
+ b _020D6D38
+_020D6BD8:
+ mov r0, #0x19
+ str r0, [r4, #0x2c]
+ mov r1, #0x12c
+ str r1, [r4, #0x30]
+ ldr r0, _020D6D64 ; =0x00001388
+ str r1, [r4, #0x44]
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x80
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x400
+ str r0, [r4, #0x4c]
+ b _020D6C7C
+_020D6C10:
+ mov r1, #0x3e8
+ ldr r0, _020D6D68 ; =0x00000BB8
+ str r1, [r4, #0x3c]
+ ldr r1, _020D6D6C ; =0x00004268
+ str r0, [r4, #0x40]
+ ldr r0, _020D6D70 ; =0x00009C40
+ str r1, [r4, #0x34]
+ str r0, [r4, #0x38]
+ mov r0, #0x0
+ strb r0, [r4, #0x48]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x1000
+ str r0, [r4, #0x4c]
+ b _020D6C7C
+_020D6C48:
+ mov r1, #0x3e8
+ ldr r0, _020D6D68 ; =0x00000BB8
+ str r1, [r4, #0x3c]
+ ldr r1, _020D6D74 ; =0x000109A0
+ str r0, [r4, #0x40]
+ ldr r0, _020D6D78 ; =0x00027100
+ str r1, [r4, #0x34]
+ str r0, [r4, #0x38]
+ mov r0, #0x0
+ strb r0, [r4, #0x48]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x1000
+ str r0, [r4, #0x4c]
+_020D6C7C:
+ mov r0, #0x10000
+ str r0, [r4, #0x1c]
+ mov r0, #0x100
+ str r0, [r4, #0x20]
+ mov r0, #0x3
+ str r0, [r4, #0x24]
+ mov r0, #0x5
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x4c]
+ add sp, sp, #0x4
+ orr r0, r0, #0x40
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x100
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x200
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x800
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D6CD8:
+ cmp r1, #0x3
+ bne _020D6D38
+ cmp r3, #0x2000
+ beq _020D6CF0
+ cmp r3, #0x8000
+ bne _020D6D38
+_020D6CF0:
+ str r3, [r4, #0x20]
+ str r3, [r4, #0x1c]
+ mov r0, #0x2
+ str r0, [r4, #0x24]
+ mov r0, #0x0
+ strb r0, [r4, #0x48]
+ ldr r0, [r4, #0x4c]
+ add sp, sp, #0x4
+ orr r0, r0, #0x40
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x100
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x4c]
+ orr r0, r0, #0x200
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D6D38:
+ mov r1, #0x0
+ str r1, [r4, #0x4]
+ str r1, [r4, #0x18]
+ ldr r0, _020D6D60 ; =0x021D55C0
+ mov r1, #0x3
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D6D60: .word 0x021D55C0
+_020D6D64: .word 0x00001388
+_020D6D68: .word 0x00000BB8
+_020D6D6C: .word 0x00004268
+_020D6D70: .word 0x00009C40
+_020D6D74: .word 0x000109A0
+_020D6D78: .word 0x00027100
+
+ arm_func_start CARD_CancelBackupAsync
+CARD_CancelBackupAsync: ; 0x020D6D7C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r1, _020D6DA8 ; =0x021D55C0
+ ldr r2, [r1, #0x114]
+ orr r2, r2, #0x40
+ str r2, [r1, #0x114]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D6DA8: .word 0x021D55C0
+
+ arm_func_start CARD_TryWaitBackupAsync
+CARD_TryWaitBackupAsync: ; 0x020D6DAC
+ ldr ip, _020D6DB4 ; =FUN_020D6714
+ bx r12
+ .balign 4
+_020D6DB4: .word FUN_020D6714
+
+ arm_func_start CARD_WaitBackupAsync
+CARD_WaitBackupAsync: ; 0x020D6DB8
+ ldr ip, _020D6DC0 ; =CARDi_WaitAsync
+ bx r12
+ .balign 4
+_020D6DC0: .word CARDi_WaitAsync
+
+ arm_func_start CARD_IdentifyBackup
+CARD_IdentifyBackup: ; 0x020D6DC4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, _020D6F00 ; =0x02000C3C
+ ldr r7, _020D6F04 ; =0x021D55C0
+ bl FUN_02000B60
+_020D6DDC: ; 0x020D6DDC
+ cmp r5, #0x0
+ bne _020D6DE8
+ bl OS_Terminate
+_020D6DE8:
+ bl CARD_CheckEnabled
+ bl OS_DisableInterrupts
+ ldr r1, [r7, #0x114]
+ mov r4, r0
+ ands r0, r1, #0x4
+ beq _020D6E18
+ add r6, r7, #0x10c
+_020D6E04:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r0, [r7, #0x114]
+ ands r0, r0, #0x4
+ bne _020D6E04
+_020D6E18:
+ ldr r0, [r7, #0x114]
+ mov r1, #0x0
+ orr r0, r0, #0x4
+ str r0, [r7, #0x114]
+ str r1, [r7, #0x38]
+ mov r0, r4
+ str r1, [r7, #0x3c]
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ bl FUN_020D6A60
+ ldr r0, _020D6F08 ; =0x021D3498
+ ldr r1, _020D6F04 ; =0x021D55C0
+ ldr r2, [r0, #0x4]
+ mov r0, r7
+ str r2, [r1, #0x104]
+ mov r1, #0x2
+ mov r2, #0x1
+ bl CARDi_Request
+_020D6E60: ; 0x020D6E60
+ ldr r0, [r7, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0xc]
+ ldr r0, [r7, #0x0]
+ add r1, r7, #0x120
+ str r1, [r0, #0x10]
+ ldr r1, [r7, #0x0]
+ mov r2, #0x1
+ mov r0, r7
+ str r2, [r1, #0x14]
+ mov r1, #0x6
+ bl CARDi_Request
+ ldr r6, [r7, #0x38]
+ ldr r5, [r7, #0x3c]
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r1, [r7, #0x114]
+ add r0, r7, #0x10c
+ bic r1, r1, #0x4c
+ str r1, [r7, #0x114]
+ bl OS_WakeupThread
+ ldr r0, [r7, #0x114]
+ ands r0, r0, #0x10
+ beq _020D6EC8
+ add r0, r7, #0x44
+ bl OS_WakeupThreadDirect
+_020D6EC8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D6ED0: ; 0x020D6ED0
+ cmp r6, #0x0
+ beq _020D6EE0
+ mov r0, r5
+ blx r6
+_020D6EE0:
+ ldr r0, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D6F00: .word 0x02000C3C
+_020D6F04: .word 0x021D55C0
+_020D6F08: .word 0x021D3498
+
+ arm_func_start CARD_GetBackupSectorSize
+CARD_GetBackupSectorSize: ; 0x020D6F0C
+ ldr r0, _020D6F1C ; =0x021D55C0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x1c]
+ bx lr
+ .balign 4
+_020D6F1C: .word 0x021D55C0
+
+ arm_func_start CARDi_RequestStreamCommand
+CARDi_RequestStreamCommand: ; 0x020D6F20
+ stmdb sp!, {r4-r10,lr}
+ mov r10, r0
+ ldr r6, _020D7004 ; =0x021D55C0
+ ldr r0, _020D7008 ; =0x02000C3C
+ mov r9, r1
+ mov r8, r2
+ mov r7, r3
+ bl FUN_02000B60
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x114]
+ mov r5, r0
+ ands r0, r1, #0x4
+ beq _020D6F6C
+ add r4, r6, #0x10c
+_020D6F58:
+ mov r0, r4
+ bl OS_SleepThread
+ ldr r0, [r6, #0x114]
+ ands r0, r0, #0x4
+ bne _020D6F58
+_020D6F6C:
+ ldr r0, [r6, #0x114]
+ ldr r1, [sp, #0x20]
+ orr r0, r0, #0x4
+ str r0, [r6, #0x114]
+ str r7, [r6, #0x38]
+ mov r0, r5
+ str r1, [r6, #0x3c]
+ bl OS_RestoreInterrupts
+ str r10, [r6, #0x1c]
+ str r9, [r6, #0x20]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x28]
+ str r8, [r6, #0x24]
+ ldr r2, [sp, #0x2c]
+ str r1, [r6, #0x2c]
+ ldr r1, [sp, #0x30]
+ str r2, [r6, #0x30]
+ str r1, [r6, #0x34]
+ cmp r0, #0x0
+ beq _020D6FD0
+ ldr r0, _020D700C ; =CARDi_RequestStreamCommandCore
+ bl CARDi_SetTask
+ mov r0, #0x1
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D6FD0:
+ ldr r0, _020D7010 ; =0x021D3498
+ ldr r1, _020D7004 ; =0x021D55C0
+ ldr r2, [r0, #0x4]
+ mov r0, r6
+ str r2, [r1, #0x104]
+ bl CARDi_RequestStreamCommandCore
+_020D6FE8: ; 0x020D6FE8
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020D7004: .word 0x021D55C0
+_020D7008: .word 0x02000C3C
+_020D700C: .word CARDi_RequestStreamCommandCore
+_020D7010: .word 0x021D3498
+
+ arm_func_start CARDi_RequestStreamCommandCore
+CARDi_RequestStreamCommandCore:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r0
+ ldr r8, [r9, #0x2c]
+ ldr r0, _020D720C ; =0x02000C3C
+ ldr r7, [r9, #0x34]
+ ldr r10, [r9, #0x30]
+ mov r6, #0x100
+ bl FUN_02000B60
+ cmp r8, #0xb
+ bne _020D7048
+ bl CARD_GetBackupSectorSize
+ mov r6, r0
+_020D7048:
+ mov r0, #0x1
+ add r4, r9, #0x120
+ mov r11, #0x9
+ str r0, [sp, #0x0]
+_020D7058:
+ ldr r5, [r9, #0x24]
+ ldr r0, [r9, #0x0]
+ cmp r6, r5
+ movcc r5, r6
+ str r5, [r0, #0x14]
+ ldr r0, [r9, #0x114]
+ ands r0, r0, #0x40
+ beq _020D7094
+ ldr r0, [r9, #0x114]
+ mov r1, #0x7
+ bic r0, r0, #0x40
+ str r0, [r9, #0x114]
+ ldr r0, [r9, #0x0]
+ str r1, [r0, #0x0]
+ b _020D71A8
+_020D7094:
+ cmp r7, #0x3
+ addls pc, pc, r7, lsl #0x2
+ b _020D7124
+_020D70A0:
+ b _020D70B0
+_020D70A4:
+ b _020D70D4
+_020D70A8:
+ b _020D70D4
+_020D70AC:
+ b _020D710C
+_020D70B0:
+ mov r1, r5
+ add r0, r9, #0x120
+ bl DC_InvalidateRange
+ ldr r1, [r9, #0x1c]
+ ldr r0, [r9, #0x0]
+ str r1, [r0, #0xc]
+ ldr r0, [r9, #0x0]
+ str r4, [r0, #0x10]
+ b _020D7124
+_020D70D4:
+ ldr r0, [r9, #0x1c]
+ mov r1, r4
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r1, r5
+ add r0, r9, #0x120
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
+_020D70F4: ; 0x020D70F4
+ ldr r0, [r9, #0x0]
+ str r4, [r0, #0xc]
+ ldr r1, [r9, #0x20]
+ ldr r0, [r9, #0x0]
+ str r1, [r0, #0x10]
+ b _020D7124
+_020D710C:
+ ldr r1, [r9, #0x1c]
+ ldr r0, [r9, #0x0]
+ str r1, [r0, #0xc]
+ ldr r1, [r9, #0x20]
+ ldr r0, [r9, #0x0]
+ str r1, [r0, #0x10]
+_020D7124:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r10
+ bl CARDi_Request
+_020D7134: ; 0x020D7134
+ cmp r0, #0x0
+ beq _020D71A8
+ cmp r7, #0x2
+ bne _020D7160
+ ldr r2, [sp, #0x0]
+ mov r0, r9
+ mov r1, r11
+ bl CARDi_Request
+_020D7154: ; 0x020D7154
+ cmp r0, #0x0
+ bne _020D7178
+ b _020D71A8
+_020D7160:
+ cmp r7, #0x0
+ bne _020D7178
+ ldr r1, [r9, #0x20]
+ mov r2, r5
+ add r0, r9, #0x120
+ bl MI_CpuCopy8
+_020D7178:
+ ldr r0, [r9, #0x1c]
+ add r0, r0, r5
+ str r0, [r9, #0x1c]
+ ldr r0, [r9, #0x20]
+ add r0, r0, r5
+ str r0, [r9, #0x20]
+ ldr r0, [r9, #0x24]
+ sub r0, r0, r5
+ str r0, [r9, #0x24]
+ ldr r0, [r9, #0x24]
+ cmp r0, #0x0
+ bne _020D7058
+_020D71A8:
+ ldr r6, [r9, #0x38]
+ ldr r5, [r9, #0x3c]
+ bl OS_DisableInterrupts
+ ldr r1, [r9, #0x114]
+ mov r4, r0
+ bic r0, r1, #0x4c
+ str r0, [r9, #0x114]
+ add r0, r9, #0x10c
+ bl OS_WakeupThread
+ ldr r0, [r9, #0x114]
+ ands r0, r0, #0x10
+ beq _020D71E0
+ add r0, r9, #0x44
+ bl OS_WakeupThreadDirect
+_020D71E0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D71E8: ; 0x020D71E8
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ mov r0, r5
+ blx r6
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D720C: .word 0x02000C3C
+
+ arm_func_start CARDi_GetRomAccessor
+CARDi_GetRomAccessor: ; 0x020D7210
+ ldr r0, _020D7218 ; =CARDi_ReadCard
+ bx lr
+ .balign 4
+_020D7218: .word CARDi_ReadCard
+
+ arm_func_start CARD_WaitRomAsync
+CARD_WaitRomAsync: ; 0x020D721C
+ ldr ip, _020D7224 ; =CARDi_WaitAsync
+ bx r12
+ .balign 4
+_020D7224: .word CARDi_WaitAsync
+
+ arm_func_start CARD_Init
+CARD_Init: ; 0x020D7228
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr ip, _020D72A0 ; =0x021D55C0
+ ldr r0, [r12, #0x114]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r0, #0x1
+ str r0, [r12, #0x114]
+ mov r3, #0x0
+ str r3, [r12, #0x24]
+ ldr r0, [r12, #0x24]
+ mvn r1, #0x0
+ str r0, [r12, #0x20]
+ ldr r2, [r12, #0x20]
+ ldr r0, _020D72A4 ; =0x021D5BE0
+ str r2, [r12, #0x1c]
+ str r1, [r12, #0x28]
+ str r3, [r12, #0x38]
+ str r3, [r12, #0x3c]
+ str r3, [r0, #0x0]
+ bl CARDi_InitCommon
+ bl CARDi_GetRomAccessor
+ ldr r1, _020D72A8 ; =0x021D5C00
+ str r0, [r1, #0x0]
+ bl CARD_InitPulledOutCallback
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D72A0: .word 0x021D55C0
+_020D72A4: .word 0x021D5BE0
+_020D72A8: .word 0x021D5C00
+
+ arm_func_start CARDi_ReadRom
+CARDi_ReadRom: ; 0x020D72AC
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr r6, _020D73C0 ; =0x021D55C0
+ mov r10, r0
+ mov r9, r1
+ mov r8, r2
+ mov r7, r3
+ ldr fp, _020D73C4 ; =0x021D5C00
+ bl CARD_CheckEnabled
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x114]
+ mov r5, r0
+ ands r0, r1, #0x4
+ beq _020D72FC
+ add r4, r6, #0x10c
+_020D72E8:
+ mov r0, r4
+ bl OS_SleepThread
+ ldr r0, [r6, #0x114]
+ ands r0, r0, #0x4
+ bne _020D72E8
+_020D72FC:
+ ldr r1, [r6, #0x114]
+ ldr r0, [sp, #0x28]
+ orr r1, r1, #0x4
+ str r1, [r6, #0x114]
+ ldr r1, [sp, #0x2c]
+ str r0, [r6, #0x38]
+ mov r0, r5
+ str r1, [r6, #0x3c]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D73C8 ; =0x021D5BE0
+ str r10, [r6, #0x28]
+ ldr r0, [r0, #0x0]
+ cmp r10, #0x3
+ add r0, r9, r0
+ str r0, [r6, #0x1c]
+ str r8, [r6, #0x20]
+ str r7, [r6, #0x24]
+ bhi _020D734C
+ mov r0, r10
+ bl MI_StopDma
+_020D734C:
+ mov r0, r11
+ bl CARDi_TryReadCardDma
+_020D7354: ; 0x020D7354
+ cmp r0, #0x0
+ beq _020D7380
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ bl CARD_WaitRomAsync
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D7380:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _020D73A0
+ ldr r0, _020D73CC ; =CARDi_ReadRomSyncCore
+ bl CARDi_SetTask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D73A0:
+ ldr r1, _020D73D0 ; =0x021D3498
+ mov r0, r6
+ ldr r1, [r1, #0x4]
+ str r1, [r6, #0x104]
+ bl CARDi_ReadRomSyncCore
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D73C0: .word 0x021D55C0
+_020D73C4: .word 0x021D5C00
+_020D73C8: .word 0x021D5BE0
+_020D73CC: .word CARDi_ReadRomSyncCore
+_020D73D0: .word 0x021D3498
+
+ arm_func_start CARDi_ReadRomSyncCore
+CARDi_ReadRomSyncCore: ; 0x020D73D4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020D7478 ; =0x021D5C00
+ mov r0, r4
+ bl CARDi_ReadFromCache
+_020D73E8: ; 0x020D73E8
+ cmp r0, #0x0
+ beq _020D73FC
+ ldr r1, [r4, #0x0]
+ mov r0, r4
+ blx r1
+_020D73FC:
+ ldr r7, _020D747C ; =0x021D55C0
+ bl CARDi_ReadRomIDCore
+ bl CARDi_CheckPulledOutCore
+_020D7408: ; 0x020D7408
+ ldr r0, [r7, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr r6, [r7, #0x38]
+ ldr r5, [r7, #0x3c]
+ bl OS_DisableInterrupts
+ ldr r1, [r7, #0x114]
+ mov r4, r0
+ bic r0, r1, #0x4c
+ str r0, [r7, #0x114]
+ add r0, r7, #0x10c
+ bl OS_WakeupThread
+ ldr r0, [r7, #0x114]
+ ands r0, r0, #0x10
+ beq _020D744C
+ add r0, r7, #0x44
+ bl OS_WakeupThreadDirect
+_020D744C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D7454: ; 0x020D7454
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, r5
+ blx r6
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D7478: .word 0x021D5C00
+_020D747C: .word 0x021D55C0
+
+ arm_func_start CARDi_ReadRomIDCore
+CARDi_ReadRomIDCore: ; 0x020D7480
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0xb8000000
+ mov r1, #0x0
+ bl CARDi_SetRomOp
+ ldr r1, _020D74DC ; =0x02106A50
+ mov r0, #0x2000
+ ldr r1, [r1, #0x0]
+ rsb r0, r0, #0x0
+ ldr r2, [r1, #0x60]
+ ldr r1, _020D74E0 ; =0x040001A4
+ bic r2, r2, #0x7000000
+ orr r2, r2, #0xa7000000
+ and r0, r2, r0
+ str r0, [r1, #0x0]
+_020D74BC:
+ ldr r0, [r1, #0x0]
+ ands r0, r0, #0x800000
+ beq _020D74BC
+ ldr r0, _020D74E4 ; =0x04100010
+ ldr r0, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D74DC: .word 0x02106A50
+_020D74E0: .word 0x040001A4
+_020D74E4: .word 0x04100010
+
+ arm_func_start CARDi_ReadCard
+CARDi_ReadCard: ; 0x020D74E8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r10, r0
+ ldr sb, _020D75DC ; =0x021D55C0
+ add r7, r10, #0x20
+ ldr r5, _020D75E0 ; =0x04100010
+ ldr r6, _020D75E4 ; =0x040001A4
+ mov r11, #0x0
+ mov r0, #0x200
+ rsb r4, r0, #0x0
+_020D7510:
+ ldr r0, [r9, #0x1c]
+ and r1, r0, r4
+ cmp r1, r0
+ bne _020D7538
+ ldr r8, [r9, #0x20]
+ ands r0, r8, #0x3
+ bne _020D7538
+ ldr r0, [r9, #0x24]
+ cmp r0, #0x200
+ bhs _020D7540
+_020D7538:
+ mov r8, r7
+ str r1, [r10, #0x8]
+_020D7540:
+ mov r0, r1, lsr #0x8
+ orr r0, r0, #0xb7000000
+ mov r1, r1, lsl #0x18
+ bl CARDi_SetRomOp
+ ldr r1, [r10, #0x4]
+ mov r0, r11
+ str r1, [r6, #0x0]
+_020D755C:
+ ldr r2, [r6, #0x0]
+ ands r1, r2, #0x800000
+ beq _020D7578
+ ldr r1, [r5, #0x0]
+ cmp r0, #0x200
+ strcc r1, [r8, r0, lsl #0x2]
+ addcc r0, r0, #0x1
+_020D7578:
+ ands r1, r2, #0x80000000
+ bne _020D755C
+ ldr r0, [r9, #0x20]
+ cmp r8, r0
+ bne _020D75C0
+ ldr r2, [r9, #0x1c]
+ ldr r1, [r9, #0x20]
+ ldr r0, [r9, #0x24]
+ add r2, r2, #0x200
+ add r1, r1, #0x200
+ subs r0, r0, #0x200
+ str r2, [r9, #0x1c]
+ str r1, [r9, #0x20]
+ str r0, [r9, #0x24]
+ bne _020D7510
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D75C0:
+ mov r0, r10
+ bl CARDi_ReadFromCache
+_020D75C8: ; 0x020D75C8
+ cmp r0, #0x0
+ bne _020D7510
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D75DC: .word 0x021D55C0
+_020D75E0: .word 0x04100010
+_020D75E4: .word 0x040001A4
+
+ arm_func_start CARDi_TryReadCardDma
+CARDi_TryReadCardDma:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr fp, _020D7748 ; =0x021D55C0
+ mov r7, #0x0
+ ldr r9, [r11, #0x20]
+ mov r10, r0
+ mov r6, r7
+ mov r5, r7
+ mov r1, r7
+ ands r4, r9, #0x1f
+ ldr r8, [r11, #0x24]
+ bne _020D7624
+ ldr r0, [r11, #0x28]
+ cmp r0, #0x3
+ movls r1, #0x1
+_020D7624:
+ cmp r1, #0x0
+ beq _020D7678
+ bl OS_GetDTCMAddress
+ ldr r1, _020D774C ; =0x01FF8000
+ add r2, r9, r8
+ cmp r2, r1
+ mov r3, #0x1
+ mov r1, #0x0
+ bls _020D7650
+ cmp r9, #0x2000000
+ movcc r1, r3
+_020D7650:
+ cmp r1, #0x0
+ bne _020D7670
+ cmp r0, r2
+ bhs _020D766C
+ add r0, r0, #0x4000
+ cmp r0, r9
+ bhi _020D7670
+_020D766C:
+ mov r3, #0x0
+_020D7670:
+ cmp r3, #0x0
+ moveq r5, #0x1
+_020D7678:
+ cmp r5, #0x0
+ beq _020D7694
+ ldr r1, [r11, #0x1c]
+ ldr r0, _020D7750 ; =0x000001FF
+ orr r1, r1, r8
+ ands r0, r1, r0
+ moveq r6, #0x1
+_020D7694:
+ cmp r6, #0x0
+ beq _020D76A4
+ cmp r8, #0x0
+ movne r7, #0x1
+_020D76A4:
+ ldr r0, _020D7754 ; =0x02106A50
+ cmp r7, #0x0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x60]
+ bic r0, r0, #0x7000000
+ orr r0, r0, #0xa1000000
+ str r0, [r10, #0x4]
+ beq _020D7738
+ bl OS_DisableInterrupts
+ mov r5, r0
+ mov r0, r9
+ mov r1, r8
+ bl IC_InvalidateRange
+_020D76D8: ; 0x020D76D8
+ cmp r4, #0x0
+ beq _020D7700
+ sub r9, r9, r4
+ mov r0, r9
+ mov r1, #0x20
+ bl DC_StoreRange
+ add r0, r9, r8
+ mov r1, #0x20
+ bl DC_StoreRange
+ add r8, r8, #0x20
+_020D7700:
+ mov r0, r9
+ mov r1, r8
+ bl DC_InvalidateRange
+ bl DC_WaitWriteBufferEmpty
+ ldr r1, _020D7758 ; =CARDi_OnReadCard
+ mov r0, #0x80000
+ bl OS_SetIrqFunction
+ mov r0, #0x80000
+ bl OS_ResetRequestIrqMask
+ mov r0, #0x80000
+ bl OS_EnableIrqMask
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ bl CARDi_SetCardDma
+_020D7738:
+ mov r0, r7
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D7748: .word 0x021D55C0
+_020D774C: .word 0x01FF8000
+_020D7750: .word 0x000001FF
+_020D7754: .word 0x02106A50
+_020D7758: .word CARDi_OnReadCard
+
+ arm_func_start CARDi_OnReadCard
+CARDi_OnReadCard: ; 0x020D775C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D7838 ; =0x021D55C0
+ ldr r0, [r0, #0x28]
+ bl MI_StopDma
+ ldr r0, _020D7838 ; =0x021D55C0
+ ldr r3, [r0, #0x1c]
+ ldr r2, [r0, #0x20]
+ ldr r1, [r0, #0x24]
+ add r3, r3, #0x200
+ add r2, r2, #0x200
+ subs r1, r1, #0x200
+ str r3, [r0, #0x1c]
+ str r2, [r0, #0x20]
+ str r1, [r0, #0x24]
+ bne _020D7828
+ mov r0, #0x80000
+ bl OS_DisableIrqMask
+ mov r0, #0x80000
+ bl OS_ResetRequestIrqMask
+ ldr r7, _020D7838 ; =0x021D55C0
+ bl CARDi_ReadRomIDCore
+ bl CARDi_CheckPulledOutCore
+_020D77B8: ; 0x020D77B8
+ ldr r0, [r7, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr r6, [r7, #0x38]
+ ldr r5, [r7, #0x3c]
+ bl OS_DisableInterrupts
+ ldr r1, [r7, #0x114]
+ mov r4, r0
+ bic r0, r1, #0x4c
+ str r0, [r7, #0x114]
+ add r0, r7, #0x10c
+ bl OS_WakeupThread
+ ldr r0, [r7, #0x114]
+ ands r0, r0, #0x10
+ beq _020D77FC
+ add r0, r7, #0x44
+ bl OS_WakeupThreadDirect
+_020D77FC:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D7804: ; 0x020D7804
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, r5
+ blx r6
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D7828:
+ bl CARDi_SetCardDma
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D7838: .word 0x021D55C0
+
+ arm_func_start CARDi_SetCardDma
+CARDi_SetCardDma: ; 0x020D783C
+ stmdb sp!, {r4,lr}
+ ldr r4, _020D7884 ; =0x021D55C0
+ ldr r1, _020D7888 ; =0x04100010
+ ldr r0, [r4, #0x28]
+ ldr r2, [r4, #0x20]
+ mov r3, #0x200
+ bl MIi_CardDmaCopy32
+ ldr r1, [r4, #0x1c]
+ mov r0, r1, lsr #0x8
+ orr r0, r0, #0xb7000000
+ mov r1, r1, lsl #0x18
+ bl CARDi_SetRomOp
+ ldr r0, _020D788C ; =0x021D5C00
+ ldr r1, _020D7890 ; =0x040001A4
+ ldr r0, [r0, #0x4]
+ str r0, [r1, #0x0]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D7884: .word 0x021D55C0
+_020D7888: .word 0x04100010
+_020D788C: .word 0x021D5C00
+_020D7890: .word 0x040001A4
+
+ arm_func_start CARDi_SetRomOp
+CARDi_SetRomOp: ; 0x020D7894
+ ldr r3, _020D790C ; =0x040001A4
+_020D7898:
+ ldr r2, [r3, #0x0]
+ ands r2, r2, #0x80000000
+ bne _020D7898
+ ldr r3, _020D7910 ; =0x040001A1
+ mov r12, #0xc0
+ ldr r2, _020D7914 ; =0x040001A8
+ strb r12, [r3, #0x0]
+ mov r12, r0, lsr #0x18
+ ldr r3, _020D7918 ; =0x040001A9
+ strb r12, [r2, #0x0]
+ mov r12, r0, lsr #0x10
+ ldr r2, _020D791C ; =0x040001AA
+ strb r12, [r3, #0x0]
+ mov r12, r0, lsr #0x8
+ ldr r3, _020D7920 ; =0x040001AB
+ strb r12, [r2, #0x0]
+ ldr r2, _020D7924 ; =0x040001AC
+ strb r0, [r3, #0x0]
+ mov r3, r1, lsr #0x18
+ ldr r0, _020D7928 ; =0x040001AD
+ strb r3, [r2, #0x0]
+ mov r3, r1, lsr #0x10
+ ldr r2, _020D792C ; =0x040001AE
+ strb r3, [r0, #0x0]
+ mov r3, r1, lsr #0x8
+ ldr r0, _020D7930 ; =0x040001AF
+ strb r3, [r2, #0x0]
+ strb r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D790C: .word 0x040001A4
+_020D7910: .word 0x040001A1
+_020D7914: .word 0x040001A8
+_020D7918: .word 0x040001A9
+_020D791C: .word 0x040001AA
+_020D7920: .word 0x040001AB
+_020D7924: .word 0x040001AC
+_020D7928: .word 0x040001AD
+_020D792C: .word 0x040001AE
+_020D7930: .word 0x040001AF
+
+ arm_func_start CARDi_ReadFromCache
+CARDi_ReadFromCache:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020D79C8 ; =0x021D55C0
+ mov r1, #0x200
+ ldr r3, [r5, #0x1c]
+ rsb r1, r1, #0x0
+ ldr r2, [r0, #0x8]
+ and r3, r3, r1
+ cmp r3, r2
+ bne _020D79AC
+ ldr r2, [r5, #0x1c]
+ ldr r1, [r5, #0x24]
+ sub r3, r2, r3
+ rsb r4, r3, #0x200
+ cmp r4, r1
+ movhi r4, r1
+ add r0, r0, #0x20
+ ldr r1, [r5, #0x20]
+ mov r2, r4
+ add r0, r0, r3
+ bl MI_CpuCopy8
+ ldr r0, [r5, #0x1c]
+ add r0, r0, r4
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x20]
+ add r0, r0, r4
+ str r0, [r5, #0x20]
+ ldr r0, [r5, #0x24]
+ sub r0, r0, r4
+ str r0, [r5, #0x24]
+_020D79AC:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D79C8: .word 0x021D55C0
+
+ arm_func_start CARDi_Request
+CARDi_Request:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ ldr r0, [r6, #0x114]
+ mov r5, r1
+ mov r4, r2
+ ands r0, r0, #0x2
+ bne _020D7A44
+ ldr r1, [r6, #0x114]
+ mov r0, #0xb
+ orr r2, r1, #0x2
+ mov r1, #0x1
+ str r2, [r6, #0x114]
+ bl PXI_IsCallbackReady
+_020D7A04: ; 0x020D7A04
+ cmp r0, #0x0
+ bne _020D7A34
+ mov r9, #0x64
+ mov r8, #0xb
+ mov r7, #0x1
+_020D7A18:
+ mov r0, r9
+ bl OS_SpinWait
+ mov r0, r8
+ mov r1, r7
+ bl PXI_IsCallbackReady
+_020D7A2C: ; 0x020D7A2C
+ cmp r0, #0x0
+ beq _020D7A18
+_020D7A34:
+ mov r0, r6
+ mov r1, #0x0
+ mov r2, #0x1
+ bl CARDi_Request
+_020D7A44:
+ ldr r0, [r6, #0x0]
+ mov r1, #0x60
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
+ mov r9, #0xb
+ mov r8, #0x1
+ mov r7, #0x0
+ mov r11, #0x60
+_020D7A64:
+ str r5, [r6, #0x4]
+ ldr r0, [r6, #0x114]
+ orr r0, r0, #0x20
+ str r0, [r6, #0x114]
+_020D7A74:
+ mov r0, r9
+ mov r1, r5
+ mov r2, r8
+ bl PXI_SendWordByFifo
+_020D7A84: ; 0x020D7A84
+ cmp r0, #0x0
+ blt _020D7A74
+ cmp r5, #0x0
+ bne _020D7AB0
+ ldr r10, [r6, #0x0]
+_020D7A98:
+ mov r0, r9
+ mov r1, r10
+ mov r2, r8
+ bl PXI_SendWordByFifo
+_020D7AA8: ; 0x020D7AA8
+ cmp r0, #0x0
+ blt _020D7A98
+_020D7AB0:
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x114]
+ mov r10, r0
+ ands r0, r1, #0x20
+ beq _020D7AD8
+_020D7AC4:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x114]
+ ands r0, r0, #0x20
+ bne _020D7AC4
+_020D7AD8:
+ mov r0, r10
+ bl OS_RestoreInterrupts
+_020D7AE0: ; 0x020D7AE0
+ ldr r0, [r6, #0x0]
+ mov r1, r11
+ bl DC_InvalidateRange
+_020D7AEC: ; 0x020D7AEC
+ ldr r0, [r6, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x4
+ bne _020D7B08
+ sub r4, r4, #0x1
+ cmp r4, #0x0
+ bgt _020D7A64
+_020D7B08:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+
+ arm_func_start CARDi_TaskThread
+CARDi_TaskThread: ; 0x020D7B20
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020D7B78 ; =0x021D55C0
+ mov r6, #0x0
+ add r7, r5, #0x44
+_020D7B34:
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x114]
+ mov r4, r0
+ ands r0, r1, #0x8
+ bne _020D7B60
+_020D7B48:
+ mov r0, r6
+ str r7, [r5, #0x104]
+ bl OS_SleepThread
+ ldr r0, [r5, #0x114]
+ ands r0, r0, #0x8
+ beq _020D7B48
+_020D7B60:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r1, [r5, #0x40]
+ mov r0, r5
+ blx r1
+ b _020D7B34
+ .balign 4
+_020D7B78: .word 0x021D55C0
+
+ arm_func_start CARDi_OnFifoRecv
+CARDi_OnFifoRecv: ; 0x020D7B7C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0xb
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r1, _020D7BC8 ; =0x021D55C0
+ ldr r0, [r1, #0x114]
+ bic r0, r0, #0x20
+ str r0, [r1, #0x114]
+ ldr r0, [r1, #0x104]
+ bl OS_WakeupThreadDirect
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D7BC8: .word 0x021D55C0
+
+ arm_func_start CARDi_SendtoPxi
+CARDi_SendtoPxi: ; 0x020D7BCC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r1, r7
+ mov r0, #0xe
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D7BEC: ; 0x020D7BEC
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r5, #0xe
+ mov r4, #0x0
+_020D7C04:
+ mov r0, r6
+ blx FUN_020005F2
+ mov r0, r5
+ mov r1, r7
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020D7C1C: ; 0x020D7C1C
+ cmp r0, #0x0
+ bne _020D7C04
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start CARDi_CheckPulledOutCore
+CARDi_CheckPulledOutCore:
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ ldr r1, _020D7C94 ; =0x027FFC10
+ ldrh r1, [r1, #0x0]
+ cmp r1, #0x0
+ ldreq r1, _020D7C98 ; =0x027FF800
+ ldrne r1, _020D7C9C ; =0x027FFC00
+ ldr r1, [r1, #0x0]
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x0]
+ cmp r0, r1
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, #0xe
+ mov r1, #0x11
+ mov r2, #0x0
+ bl CARDi_PulledOutCallback
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D7C94: .word 0x027FFC10
+_020D7C98: .word 0x027FF800
+_020D7C9C: .word 0x027FFC00
+
+ arm_func_start CARD_TerminateForPulledOut
+CARD_TerminateForPulledOut: ; 0x020D7CA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D7D10 ; =0x027FFFA8
+ mov r5, #0x1
+ ldrh r0, [r0, #0x0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ beq _020D7CEC
+ bl PM_ForceToPowerOff
+ cmp r0, #0x4
+ bne _020D7CE4
+ ldr r4, _020D7D14 ; =0x000A3A47
+_020D7CD0:
+ mov r0, r4
+ bl OS_SpinWait
+ bl PM_ForceToPowerOff
+ cmp r0, #0x4
+ beq _020D7CD0
+_020D7CE4:
+ cmp r0, #0x0
+ moveq r5, #0x0
+_020D7CEC:
+ cmp r5, #0x0
+ beq _020D7D00
+ mov r0, #0x1
+ mov r1, r0
+ bl CARDi_SendtoPxi
+_020D7D00:
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D7D10: .word 0x027FFFA8
+_020D7D14: .word 0x000A3A47
+
+ arm_func_start CARD_IsPulledOut
+CARD_IsPulledOut: ; 0x020D7D18
+ ldr r0, _020D7D24 ; =0x021D5E20
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D7D24: .word 0x021D5E20
+
+ arm_func_start CARDi_PulledOutCallback
+CARDi_PulledOutCallback: ; 0x020D7D28
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ and r0, r1, #0x3f
+ cmp r0, #0x11
+ bne _020D7D90
+ ldr r2, _020D7DA0 ; =0x021D5E20
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, _020D7DA4 ; =0x021D5E24
+ mov r0, #0x1
+ ldr r1, [r1, #0x0]
+ str r0, [r2, #0x0]
+ cmp r1, #0x0
+ beq _020D7D70
+ blx r1
+_020D7D70:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl CARD_TerminateForPulledOut
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020D7D90:
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D7DA0: .word 0x021D5E20
+_020D7DA4: .word 0x021D5E24
+
+ arm_func_start CARD_InitPulledOutCallback
+CARD_InitPulledOutCallback: ; 0x020D7DA8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl PXI_Init
+ ldr r1, _020D7DD8 ; =CARDi_PulledOutCallback
+ mov r0, #0xe
+ bl PXI_SetFifoRecvCallback
+ ldr r0, _020D7DDC ; =0x021D5E24
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D7DD8: .word CARDi_PulledOutCallback
+_020D7DDC: .word 0x021D5E24
diff --git a/asm/CTRDG_arm9.s b/asm/CTRDG_arm9.s
new file mode 100644
index 00000000..02592388
--- /dev/null
+++ b/asm/CTRDG_arm9.s
@@ -0,0 +1,3238 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start CTRDG_CheckEnabled
+CTRDG_CheckEnabled:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl CTRDG_IsOptionCartridge
+_020DB128: ; 0x020DB128
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl CTRDG_IsEnabled
+_020DB13C: ; 0x020DB13C
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_Enable
+CTRDG_Enable: ; 0x020DB15C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020DB1AC ; =0x021D6940
+ mov r4, r0
+ str r5, [r1, #0x0]
+ bl CTRDG_IsOptionCartridge
+_020DB17C: ; 0x020DB17C
+ cmp r0, #0x0
+ bne _020DB198
+ cmp r5, #0x0
+ movne r1, #0x1000
+ moveq r1, #0x5000
+ mov r0, #0xf000
+ bl OS_SetDPermissionsForProtectionRegion
+_020DB198:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DB1AC: .word 0x021D6940
+
+ arm_func_start CTRDG_IsEnabled
+CTRDG_IsEnabled:
+ ldr r0, _020DB1BC ; =0x021D6940
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020DB1BC: .word 0x021D6940
+
+ arm_func_start CTRDGi_AccessCommon
+CTRDGi_AccessCommon: ; 0x020DB1C0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl CTRDG_IsExisting
+_020DB1DC: ; 0x020DB1DC
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ bl CTRDG_CheckEnabled
+ ldr r0, _020DB2BC ; =0x021D6944
+ ldrh r0, [r0, #0x2]
+ bl OS_LockCartridge
+ cmp r4, #0x21
+ bhi _020DB240
+ cmp r4, #0x21
+ bhs _020DB270
+ cmp r4, #0x11
+ bhi _020DB234
+ cmp r4, #0x10
+ blo _020DB294
+ cmp r4, #0x10
+ beq _020DB290
+ cmp r4, #0x11
+ beq _020DB260
+ b _020DB294
+_020DB234:
+ cmp r4, #0x20
+ streqh r6, [r7, #0x0]
+ b _020DB294
+_020DB240:
+ cmp r4, #0x40
+ bhi _020DB254
+ cmp r4, #0x40
+ streq r6, [r7, #0x0]
+ b _020DB294
+_020DB254:
+ cmp r4, #0x41
+ beq _020DB280
+ b _020DB294
+_020DB260:
+ cmp r5, #0x0
+ ldrneb r0, [r7, #0x0]
+ strneb r0, [r5, #0x0]
+ b _020DB294
+_020DB270:
+ cmp r5, #0x0
+ ldrneh r0, [r7, #0x0]
+ strneh r0, [r5, #0x0]
+ b _020DB294
+_020DB280:
+ cmp r5, #0x0
+ ldrne r0, [r7, #0x0]
+ strne r0, [r5, #0x0]
+ b _020DB294
+_020DB290:
+ strb r6, [r7, #0x0]
+_020DB294:
+ ldr r0, _020DB2BC ; =0x021D6944
+ ldrh r0, [r0, #0x2]
+ bl OS_UnlockCartridge
+ bl CTRDG_IsExisting
+_020DB2A4: ; 0x020DB2A4
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DB2BC: .word 0x021D6944
+
+ arm_func_start CTRDG_Read32
+CTRDG_Read32: ; 0x020DB2C0
+ ldr ip, _020DB2D4 ; =CTRDGi_AccessCommon
+ mov r2, r1
+ mov r1, #0x0
+ mov r3, #0x41
+ bx r12
+ .balign 4
+_020DB2D4: .word CTRDGi_AccessCommon
+
+ arm_func_start CTRDGi_CopyCommon
+CTRDGi_CopyCommon: ; 0x020DB2D8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl CTRDG_IsExisting
+_020DB2F4: ; 0x020DB2F4
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ bl CTRDG_CheckEnabled
+ ldr r0, _020DB42C ; =0x021D6944
+ ldrh r0, [r0, #0x2]
+ bl OS_LockCartridge
+ ldr r0, [sp, #0x18]
+ ands r0, r0, #0x1
+ bne _020DB338
+ mov r0, r7
+ bl MI_StopDma
+ mov r0, r5
+ mov r1, r4
+ bl DC_FlushRange
+_020DB338:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x11
+ bhi _020DB36C
+ cmp r0, #0x10
+ blo _020DB360
+ cmp r0, #0x10
+ beq _020DB38C
+ cmp r0, #0x11
+ beq _020DB3BC
+ b _020DB404
+_020DB360:
+ cmp r0, #0x1
+ beq _020DB3E4
+ b _020DB404
+_020DB36C:
+ cmp r0, #0x20
+ bhi _020DB380
+ cmp r0, #0x20
+ beq _020DB3A4
+ b _020DB404
+_020DB380:
+ cmp r0, #0x21
+ beq _020DB3D0
+ b _020DB404
+_020DB38C:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ bl MI_DmaCopy16
+ b _020DB404
+_020DB3A4:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ bl MI_DmaCopy32
+ b _020DB404
+_020DB3BC:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MIi_CpuCopy16
+ b _020DB404
+_020DB3D0:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MIi_CpuCopy32
+ b _020DB404
+_020DB3E4:
+ cmp r4, #0x0
+ mov r1, #0x0
+ bls _020DB404
+_020DB3F0:
+ ldrb r0, [r6], #0x1
+ add r1, r1, #0x1
+ cmp r1, r4
+ strb r0, [r5], #0x1
+ blo _020DB3F0
+_020DB404:
+ ldr r0, _020DB42C ; =0x021D6944
+ ldrh r0, [r0, #0x2]
+ bl OS_UnlockCartridge
+ bl CTRDG_IsExisting
+_020DB414: ; 0x020DB414
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DB42C: .word 0x021D6944
+
+ arm_func_start CTRDG_CpuCopy32
+CTRDG_CpuCopy32: ; 0x020DB430
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x21
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x0
+ str r12, [sp, #0x0]
+ bl CTRDGi_CopyCommon
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_CpuCopy16
+CTRDG_CpuCopy16: ; 0x020DB464
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x11
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x0
+ str r12, [sp, #0x0]
+ bl CTRDGi_CopyCommon
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_CpuCopy8
+CTRDG_CpuCopy8: ; 0x020DB498
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ cmp lr, #0x8000000
+ blo _020DB4DC
+ ldr r2, _020DB500 ; =0x0A010000
+ cmp lr, r2
+ bhs _020DB4DC
+ mov r12, #0x1
+ mov r2, r0
+ mov r0, #0x0
+ str r12, [sp, #0x0]
+ bl CTRDGi_CopyCommon
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020DB4DC:
+ mov r12, #0x1
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x0
+ str r12, [sp, #0x0]
+ bl CTRDGi_CopyCommon
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DB500: .word 0x0A010000
+
+ arm_func_start CTRDGi_SendtoPxi
+CTRDGi_SendtoPxi: ; 0x020DB504
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r1, r7
+ mov r0, #0xd
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020DB520: ; 0x020DB520
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r6, #0x1
+ mov r5, #0xd
+ mov r4, #0x0
+_020DB53C:
+ mov r0, r6
+ blx FUN_020005F2
+ mov r0, r5
+ mov r1, r7
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020DB554: ; 0x020DB554
+ cmp r0, #0x0
+ bne _020DB53C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start CTRDGi_UnlockByProcessor
+CTRDGi_UnlockByProcessor: ; 0x020DB568
+ stmdb sp!, {r4,lr}
+ mov r4, r1
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _020DB580
+ bl OS_UnlockCartridge
+_020DB580:
+ ldr r0, [r4, #0x4]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start CTRDGi_LockByProcessor
+CTRDGi_LockByProcessor: ; 0x020DB590
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ ldr r5, _020DB60C ; =0x027FFFE8
+ mov r4, #0x1
+_020DB5A8:
+ bl OS_DisableInterrupts
+ str r0, [r6, #0x4]
+ mov r0, r5
+ bl OS_ReadOwnerOfLockWord
+ and r0, r0, #0x40
+ str r0, [r6, #0x0]
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ mov r0, r7
+ bl OS_TryLockCartridge
+_020DB5DC: ; 0x020DB5DC
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldr r0, [r6, #0x4]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ blx FUN_020005F2
+ b _020DB5A8
+_020DB600: ; 0x020DB600
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DB60C: .word 0x027FFFE8
+
+ arm_func_start CTRDGi_RestoreAccessCycle
+CTRDGi_RestoreAccessCycle: ; 0x020DB610
+ ldr r3, _020DB640 ; =0x04000204
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r3, #0x0]
+ bic r1, r1, #0xc
+ orr r1, r1, r2, lsl #0x2
+ strh r1, [r3, #0x0]
+ ldrh r1, [r3, #0x0]
+ ldr r2, [r0, #0x4]
+ bic r0, r1, #0x10
+ orr r0, r0, r2, lsl #0x4
+ strh r0, [r3, #0x0]
+ bx lr
+ .balign 4
+_020DB640: .word 0x04000204
+
+ arm_func_start CTRDGi_ChangeLatestAccessCycle
+CTRDGi_ChangeLatestAccessCycle: ; 0x020DB644
+ ldr r2, _020DB688 ; =0x04000204
+ ldrh r1, [r2, #0x0]
+ and r1, r1, #0xc
+ mov r1, r1, asr #0x2
+ str r1, [r0, #0x0]
+ ldrh r1, [r2, #0x0]
+ and r1, r1, #0x10
+ mov r1, r1, asr #0x4
+ str r1, [r0, #0x4]
+ ldrh r0, [r2, #0x0]
+ bic r0, r0, #0xc
+ orr r0, r0, #0xc
+ strh r0, [r2, #0x0]
+ ldrh r0, [r2, #0x0]
+ bic r0, r0, #0x10
+ strh r0, [r2, #0x0]
+ bx lr
+ .balign 4
+_020DB688: .word 0x04000204
+
+ arm_func_start CTRDG_IsExisting
+CTRDG_IsExisting:
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x10
+ ldr r2, _020DB798 ; =0x027FFC30
+ ldr r0, _020DB79C ; =0x0000FFFF
+ ldrh r1, [r2, #0x0]
+ mov r4, #0x1
+ cmp r1, r0
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldrb r0, [r2, #0x5]
+ mov r0, r0, lsl #0x1e
+ mov r0, r0, lsr #0x1f
+ cmp r0, #0x1
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldr r0, _020DB7A0 ; =0x021D6944
+ add r1, sp, #0x0
+ ldrh r0, [r0, #0x2]
+ bl CTRDGi_LockByProcessor
+ add r0, sp, #0x8
+ bl CTRDGi_ChangeLatestAccessCycle
+ mov r0, #0x8000000
+ ldrb r2, [r0, #0xb2]
+ cmp r2, #0x96
+ bne _020DB714
+ ldr r1, _020DB798 ; =0x027FFC30
+ ldrh r0, [r0, #0xbe]
+ ldrh r1, [r1, #0x0]
+ cmp r1, r0
+ bne _020DB75C
+_020DB714:
+ cmp r2, #0x96
+ beq _020DB734
+ ldr r1, _020DB798 ; =0x027FFC30
+ ldr r0, _020DB7A4 ; =0x0801FFFE
+ ldrh r1, [r1, #0x0]
+ ldrh r0, [r0, #0x0]
+ cmp r1, r0
+ bne _020DB75C
+_020DB734:
+ ldr r2, _020DB798 ; =0x027FFC30
+ mov r0, #0x8000000
+ ldr r1, [r2, #0x8]
+ ldr r0, [r0, #0xac]
+ cmp r1, r0
+ beq _020DB770
+ ldrb r0, [r2, #0x5]
+ mov r0, r0, lsl #0x1f
+ movs r0, r0, lsr #0x1f
+ beq _020DB770
+_020DB75C:
+ ldr r1, _020DB798 ; =0x027FFC30
+ mov r4, #0x0
+ ldrb r0, [r1, #0x5]
+ orr r0, r0, #0x2
+ strb r0, [r1, #0x5]
+_020DB770:
+ add r0, sp, #0x8
+ bl CTRDGi_RestoreAccessCycle
+ ldr r0, _020DB7A0 ; =0x021D6944
+ add r1, sp, #0x0
+ ldrh r0, [r0, #0x2]
+ bl CTRDGi_UnlockByProcessor
+ mov r0, r4
+ add sp, sp, #0x10
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020DB798: .word 0x027FFC30
+_020DB79C: .word 0x0000FFFF
+_020DB7A0: .word 0x021D6944
+_020DB7A4: .word 0x0801FFFE
+
+ arm_func_start CTRDG_IsPulledOut
+CTRDG_IsPulledOut: ; 0x020DB7A8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020DB800 ; =0x027FFC30
+ ldr r0, _020DB804 ; =0x0000FFFF
+ ldrh r1, [r2, #0x0]
+ cmp r1, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldrb r0, [r2, #0x5]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, lsr #0x1f
+ bne _020DB7E4
+ bl CTRDG_IsExisting
+_020DB7E4:
+ ldr r0, _020DB800 ; =0x027FFC30
+ ldrb r0, [r0, #0x5]
+ mov r0, r0, lsl #0x1e
+ mov r0, r0, lsr #0x1f
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DB800: .word 0x027FFC30
+_020DB804: .word 0x0000FFFF
+
+ arm_func_start CTRDGi_GetAgbMakerCodeAtInit
+CTRDGi_GetAgbMakerCodeAtInit: ; 0x020DB808
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ bl CTRDGi_IsAgbCartridgeAtInit
+_020DB814: ; 0x020DB814
+ cmp r0, #0x0
+ ldrne r0, _020DB82C ; =0x027FFC30
+ ldrneh r4, [r0, #0x6]
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020DB82C: .word 0x027FFC30
+
+ arm_func_start CTRDG_GetAgbMakerCode
+CTRDG_GetAgbMakerCode: ; 0x020DB830
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ bl CTRDG_IsExisting
+_020DB83C: ; 0x020DB83C
+ cmp r0, #0x0
+ beq _020DB84C
+ bl CTRDGi_GetAgbMakerCodeAtInit
+ mov r4, r0
+_020DB84C:
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start CTRDGi_GetAgbGameCodeAtInit
+CTRDGi_GetAgbGameCodeAtInit: ; 0x020DB858
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ bl CTRDGi_IsAgbCartridgeAtInit
+_020DB864: ; 0x020DB864
+ cmp r0, #0x0
+ ldrne r0, _020DB87C ; =0x027FFC30
+ ldrne r4, [r0, #0x8]
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020DB87C: .word 0x027FFC30
+
+ arm_func_start CTRDG_GetAgbGameCode
+CTRDG_GetAgbGameCode: ; 0x020DB880
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ bl CTRDG_IsExisting
+_020DB88C: ; 0x020DB88C
+ cmp r0, #0x0
+ beq _020DB89C
+ bl CTRDGi_GetAgbGameCodeAtInit
+ mov r4, r0
+_020DB89C:
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start CTRDGi_IsAgbCartridgeAtInit
+CTRDGi_IsAgbCartridgeAtInit:
+ ldr r0, _020DB8BC ; =0x027FFC30
+ ldrb r0, [r0, #0x5]
+ mov r0, r0, lsl #0x1f
+ mov r0, r0, lsr #0x1f
+ bx lr
+ .balign 4
+_020DB8BC: .word 0x027FFC30
+
+ arm_func_start CTRDG_IsOptionCartridge
+CTRDG_IsOptionCartridge:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl CTRDG_IsExisting
+_020DB8CC: ; 0x020DB8CC
+ cmp r0, #0x0
+ beq _020DB8EC
+ bl CTRDGi_IsAgbCartridgeAtInit
+_020DB8D8: ; 0x020DB8D8
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x1
+ ldmeqia sp!, {lr}
+ bxeq lr
+_020DB8EC:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_IsAgbCartridge
+CTRDG_IsAgbCartridge: ; 0x020DB8FC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl CTRDG_IsExisting
+_020DB908: ; 0x020DB908
+ cmp r0, #0x0
+ beq _020DB928
+ bl CTRDGi_IsAgbCartridgeAtInit
+_020DB914: ; 0x020DB914
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ movne r0, #0x1
+ ldmneia sp!, {lr}
+ bxne lr
+_020DB928:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_InitCommon
+CTRDGi_InitCommon: ; 0x020DB938
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020DB970 ; =0x021D6944
+ mov r3, #0x0
+ ldr r2, _020DB974 ; =0x05000001
+ add r0, sp, #0x0
+ str r3, [sp, #0x0]
+ blx FUN_020002FE
+ bl OS_GetLockID
+ ldr r1, _020DB970 ; =0x021D6944
+ strh r0, [r1, #0x2]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DB970: .word 0x021D6944
+_020DB974: .word 0x05000001
+
+ arm_func_start CTRDGi_CallbackForSetPhi
+CTRDGi_CallbackForSetPhi: ; 0x020DB978
+ ldr r0, _020DB988 ; =0x021D694C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020DB988: .word 0x021D694C
+
+ arm_func_start CTRDG_TerminateForPulledOut
+CTRDG_TerminateForPulledOut: ; 0x020DB98C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x2
+ bl CTRDGi_SendtoPxi
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_PulledOutCallback
+CTRDGi_PulledOutCallback: ; 0x020DB9AC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ and r0, r1, #0x3f
+ cmp r0, #0x11
+ bne _020DBA14
+ ldr r0, _020DBA24 ; =0x021D6954
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, _020DBA28 ; =0x021D6958
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020DB9F0
+ blx r1
+_020DB9F0:
+ cmp r0, #0x0
+ beq _020DB9FC
+ bl CTRDG_TerminateForPulledOut
+_020DB9FC:
+ ldr r0, _020DBA24 ; =0x021D6954
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020DBA14:
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DBA24: .word 0x021D6954
+_020DBA28: .word 0x021D6958
+
+ arm_func_start CTRDGi_CallbackForInitModuleInfo
+CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ and r0, r1, #0x3f
+ cmp r0, #0x1
+ ldreq r0, _020DBA64 ; =0x021D6944
+ moveq r1, #0x1
+ streqh r1, [r0, #0x0]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DBA64: .word 0x021D6944
+
+ arm_func_start CTRDGi_InitModuleInfo
+CTRDGi_InitModuleInfo: ; 0x020DBA68
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ ldr r0, _020DBC50 ; =0x021D6948
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ ldr r1, _020DBC54 ; =0x04000300
+ mov r2, #0x1
+ str r2, [r0, #0x0]
+ ldrh r0, [r1, #0x0]
+ ands r0, r0, #0x1
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, #0x40000
+ bl OS_SetIrqMask
+ ldr r3, _020DBC58 ; =0x04000208
+ mov r2, #0x1
+ ldrh r4, [r3, #0x0]
+ ldr r1, _020DBC5C ; =0x021D6944
+ mov r6, r0
+ strh r2, [r3, #0x0]
+ ldrh r0, [r1, #0x2]
+ add r1, sp, #0x0
+ bl CTRDGi_LockByProcessor
+ ldr r1, _020DBC60 ; =0x04000204
+ add r0, sp, #0x8
+ ldrh r1, [r1, #0x0]
+ and r1, r1, #0x8000
+ mov r5, r1, asr #0xf
+ bl CTRDGi_ChangeLatestAccessCycle
+ ldr r3, _020DBC60 ; =0x04000204
+ ldr r0, _020DBC64 ; =0x021D6960
+ ldrh r2, [r3, #0x0]
+ add r0, r0, #0x80
+ mov r1, #0x40
+ bic r2, r2, #0x8000
+ strh r2, [r3, #0x0]
+ bl DC_InvalidateRange
+ ldr r2, _020DBC64 ; =0x021D6960
+ ldr r1, _020DBC68 ; =0x08000080
+ mov r0, #0x1
+ mov r3, #0x40
+ add r2, r2, #0x80
+ bl MI_DmaCopy16
+ ldr r2, _020DBC60 ; =0x04000204
+ add r0, sp, #0x8
+ ldrh r1, [r2, #0x0]
+ bic r1, r1, #0x8000
+ orr r1, r1, r5, lsl #0xf
+ strh r1, [r2, #0x0]
+ bl CTRDGi_RestoreAccessCycle
+ ldr r0, _020DBC5C ; =0x021D6944
+ add r1, sp, #0x0
+ ldrh r0, [r0, #0x2]
+ bl CTRDGi_UnlockByProcessor
+ ldr r0, _020DBC6C ; =0x027FFF9B
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020DBB70
+ ldr r0, _020DBC70 ; =0x027FFF9A
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020DBBDC
+_020DBB70:
+ ldr r2, _020DBC64 ; =0x021D6960
+ ldr r0, _020DBC74 ; =0x027FFC30
+ ldrh r1, [r2, #0xbe]
+ mov r3, #0x0
+ strh r1, [r0, #0x0]
+_020DBB84:
+ add r0, r2, r3
+ ldrb r1, [r0, #0xb5]
+ add r0, r3, #0x2700000
+ add r0, r0, #0xff000
+ add r3, r3, #0x1
+ strb r1, [r0, #0xC32]
+ cmp r3, #0x3
+ blt _020DBB84
+ ldrh r0, [r2, #0xb0]
+ ldr r1, _020DBC74 ; =0x027FFC30
+ strh r0, [r1, #0x6]
+ ldr r0, [r2, #0xac]
+ str r0, [r1, #0x8]
+ bl CTRDG_IsExisting
+_020DBBBC: ; 0x020DBBBC
+ cmp r0, #0x0
+ movne r2, #0x1
+ ldr r1, _020DBC6C ; =0x027FFF9B
+ moveq r2, #0x0
+ strb r2, [r1, #0x0]
+ ldr r0, _020DBC70 ; =0x027FFF9A
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+_020DBBDC:
+ ldr r0, _020DBC78 ; =0xFFFF0020
+ ldr r1, _020DBC7C ; =0x021D6964
+ mov r2, #0x9c
+ bl MIi_CpuCopy32
+ bl DC_FlushAll
+ ldr r0, _020DBC64 ; =0x021D6960
+ add r0, r0, #0xfe000000
+ mov r0, r0, lsr #0x5
+ mov r0, r0, lsl #0x6
+ orr r0, r0, #0x1
+ bl CTRDGi_SendtoPxi
+ ldr r5, _020DBC5C ; =0x021D6944
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1
+ beq _020DBC30
+ mov r7, #0x1
+_020DBC1C:
+ mov r0, r7
+ blx FUN_020005F2
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _020DBC1C
+_020DBC30:
+ ldr r2, _020DBC58 ; =0x04000208
+ mov r0, r6
+ ldrh r1, [r2, #0x0]
+ strh r4, [r2, #0x0]
+ bl OS_SetIrqMask
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DBC50: .word 0x021D6948
+_020DBC54: .word 0x04000300
+_020DBC58: .word 0x04000208
+_020DBC5C: .word 0x021D6944
+_020DBC60: .word 0x04000204
+_020DBC64: .word 0x021D6960
+_020DBC68: .word 0x08000080
+_020DBC6C: .word 0x027FFF9B
+_020DBC70: .word 0x027FFF9A
+_020DBC74: .word 0x027FFC30
+_020DBC78: .word 0xFFFF0020
+_020DBC7C: .word 0x021D6964
+
+ arm_func_start CTRDG_Init
+CTRDG_Init: ; 0x020DBC80
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020DBD34 ; =0x021D6950
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ bl CTRDGi_InitCommon
+ ldr r0, _020DBD38 ; =0x021D6954
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bl PXI_Init
+ mov r5, #0xd
+ mov r4, #0x1
+_020DBCC4:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020DBCD0: ; 0x020DBCD0
+ cmp r0, #0x0
+ beq _020DBCC4
+ ldr r1, _020DBD3C ; =CTRDGi_CallbackForInitModuleInfo
+ mov r0, #0xd
+ bl PXI_SetFifoRecvCallback
+ bl CTRDGi_InitModuleInfo
+ mov r0, #0xd
+ mov r1, #0x0
+ bl PXI_SetFifoRecvCallback
+ ldr r1, _020DBD40 ; =CTRDGi_PulledOutCallback
+ mov r0, #0xd
+ bl PXI_SetFifoRecvCallback
+ ldr r1, _020DBD44 ; =0x021D6958
+ mov r2, #0x0
+ ldr r0, _020DBD48 ; =0x021D6A20
+ str r2, [r1, #0x0]
+ bl CTRDGi_InitTaskThread
+ ldr r1, _020DBD4C ; =CTRDGi_CallbackForSetPhi
+ mov r0, #0x11
+ bl PXI_SetFifoRecvCallback
+_020DBD20: ; 0x020DBD20
+ mov r0, #0x0
+ bl CTRDG_Enable
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DBD34: .word 0x021D6950
+_020DBD38: .word 0x021D6954
+_020DBD3C: .word CTRDGi_CallbackForInitModuleInfo
+_020DBD40: .word CTRDGi_PulledOutCallback
+_020DBD44: .word 0x021D6958
+_020DBD48: .word 0x021D6A20
+_020DBD4C: .word CTRDGi_CallbackForSetPhi
+
+ arm_func_start CTRDG_IdentifyAgbBackup
+CTRDG_IdentifyAgbBackup: ; 0x020DBD50
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ cmp r7, #0x1
+ mov r0, #0x1
+ bhi _020DBEAC
+ bl OS_GetLockID
+ ldr r1, _020DBED8 ; =0x021D6B0C
+ strh r0, [r1, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_LockCartridge
+ ldr r6, _020DBEDC ; =0x04000204
+ ldr r1, _020DBEE0 ; =0x02103FE4
+ ldrh r3, [r6, #0x0]
+ ldrh r2, [r6, #0x0]
+ ldr r0, _020DBEE4 ; =0x021D6B28
+ and r4, r3, #0x3
+ bic r2, r2, #0x3
+ orr r2, r2, #0x3
+ strh r2, [r6, #0x0]
+ str r1, [r0, #0x0]
+ bl CTRDGi_ReadFlashID
+ ldr r2, _020DBEDC ; =0x04000204
+ mov r6, r0
+ ldrh r1, [r2, #0x0]
+ cmp r7, #0x0
+ ldreq r5, _020DBEE8 ; =0x02103FF4
+ bic r1, r1, #0x3
+ orr r1, r1, r4
+ cmp r7, #0x1
+ ldr r0, _020DBED8 ; =0x021D6B0C
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ ldreq r5, _020DBEEC ; =0x02103FE8
+ bl OS_UnlockCartridge2
+ ldr r2, [r5, #0x0]
+ mov r0, #0x1
+ ldrh r1, [r2, #0x38]
+ cmp r1, #0x0
+ beq _020DBE14
+ and r3, r6, #0xff
+_020DBDF4:
+ ldrh r1, [r2, #0x38]
+ cmp r3, r1
+ moveq r0, #0x0
+ beq _020DBE14
+ ldr r2, [r5, #0x4]!
+ ldrh r1, [r2, #0x38]
+ cmp r1, #0x0
+ bne _020DBDF4
+_020DBE14:
+ ldr r2, [r2, #0x0]
+ ldr r1, _020DBEF0 ; =0x021D6B14
+ ldr r3, _020DBEF4 ; =0x021D6B34
+ str r2, [r1, #0x0]
+ ldr r1, [r5, #0x0]
+ ldr r2, _020DBEF8 ; =0x021D6B2C
+ ldr r4, [r1, #0x4]
+ ldr r1, _020DBEFC ; =0x021D6B18
+ str r4, [r3, #0x0]
+ ldr r3, [r5, #0x0]
+ ldr r6, _020DBF00 ; =0x021D6B1C
+ ldr r3, [r3, #0x8]
+ ldr r4, _020DBF04 ; =0x021D6B30
+ str r3, [r2, #0x0]
+ ldr r2, [r5, #0x0]
+ ldr r3, _020DBF08 ; =0x021D6B24
+ ldr r7, [r2, #0xc]
+ ldr r2, _020DBEE4 ; =0x021D6B28
+ str r7, [r1, #0x0]
+ ldr r7, [r5, #0x0]
+ ldr r1, _020DBF0C ; =0x021D6B20
+ ldr r7, [r7, #0x10]
+ add sp, sp, #0x4
+ str r7, [r6, #0x0]
+ ldr r6, [r5, #0x0]
+ ldr r6, [r6, #0x14]
+ str r6, [r4, #0x0]
+ ldr r4, [r5, #0x0]
+ ldr r4, [r4, #0x18]
+ str r4, [r3, #0x0]
+ ldr r3, [r5, #0x0]
+ ldr r3, [r3, #0x1c]
+ str r3, [r2, #0x0]
+ ldr r2, [r5, #0x0]
+ add r2, r2, #0x20
+ str r2, [r1, #0x0]
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020DBEAC:
+ cmp r7, #0x2
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ bl OS_GetLockID
+ ldr r1, _020DBF10 ; =0x021D6B4C
+ strh r0, [r1, #0x0]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DBED8: .word 0x021D6B0C
+_020DBEDC: .word 0x04000204
+_020DBEE0: .word 0x02103FE4
+_020DBEE4: .word 0x021D6B28
+_020DBEE8: .word 0x02103FF4
+_020DBEEC: .word 0x02103FE8
+_020DBEF0: .word 0x021D6B14
+_020DBEF4: .word 0x021D6B34
+_020DBEF8: .word 0x021D6B2C
+_020DBEFC: .word 0x021D6B18
+_020DBF00: .word 0x021D6B1C
+_020DBF04: .word 0x021D6B30
+_020DBF08: .word 0x021D6B24
+_020DBF0C: .word 0x021D6B20
+_020DBF10: .word 0x021D6B4C
+
+ arm_func_start CTRDG_WriteAndVerifyAgbFlashAsync
+CTRDG_WriteAndVerifyAgbFlashAsync: ; 0x020DBF14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ str r2, [sp, #0x18]
+ ldr r1, _020DBF44 ; =CTRDGi_WriteAndVerifyAgbFlashSectorCore
+ add r0, sp, #0x0
+ mov r2, r3
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DBF44: .word CTRDGi_WriteAndVerifyAgbFlashSectorCore
+
+ arm_func_start CTRDG_VerifyAgbFlash
+CTRDG_VerifyAgbFlash:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ str r2, [sp, #0x18]
+ bl CTRDGi_VerifyAgbFlashCore
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_WriteAgbFlashSector
+CTRDG_WriteAgbFlashSector:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020DBF90 ; =0x021D6B14
+ ldr r2, [r2, #0x0]
+ blx r2
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DBF90: .word 0x021D6B14
+
+ arm_func_start CTRDG_ReadAgbFlash
+CTRDG_ReadAgbFlash: ; 0x020DBF94
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x1c]
+ str r3, [sp, #0x18]
+ bl CTRDGi_ReadAgbFlashCore
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_WriteAndVerifyAgbFlashSectorCore
+CTRDGi_WriteAndVerifyAgbFlashSectorCore: ; 0x020DBFC0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x24
+ mov r4, r0
+ ldmia r4!, {r0-r3}
+ add r12, sp, #0x0
+ stmia r12!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldr r0, [r4, #0x0]
+ mov r7, #0x0
+ str r0, [r12, #0x0]
+ ldrh r6, [sp, #0x20]
+ ldr r5, [sp, #0xc]
+ ldr r4, [sp, #0x18]
+_020DBFF8:
+ mov r0, r6
+ mov r1, r5
+ bl CTRDG_WriteAgbFlashSector
+_020DC004: ; 0x020DC004
+ cmp r0, #0x0
+ bne _020DC02C
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl CTRDG_VerifyAgbFlash
+_020DC01C: ; 0x020DC01C
+ cmp r0, #0x0
+ addeq sp, sp, #0x24
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+_020DC02C:
+ add r1, r7, #0x1
+ mov r1, r1, lsl #0x10
+ mov r7, r1, lsr #0x10
+ cmp r7, #0x3
+ blo _020DBFF8
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start CTRDGi_VerifyAgbFlashCore
+CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DC128 ; =0x021D6B0C
+ ldr r1, [r5, #0x0]
+ ldrh r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldrh r6, [sp, #0x20]
+ ldr r5, [sp, #0xc]
+ ldr r4, [sp, #0x18]
+ bl OS_LockCartridge
+ ldr r3, _020DC12C ; =0x04000204
+ ldr r0, _020DC130 ; =0x021D6B20
+ ldrh r2, [r3, #0x0]
+ ldrh r1, [r3, #0x0]
+ and r7, r2, #0x3
+ bic r1, r1, #0x3
+ orr r1, r1, #0x3
+ strh r1, [r3, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x20000
+ bne _020DC0D4
+ mov r0, r6, lsl #0xc
+ mov r0, r0, lsr #0x10
+ bl CTRDGi_SetFlashBankMx
+ and r0, r6, #0xf
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+_020DC0D4:
+ ldr r1, _020DC130 ; =0x021D6B20
+ mov r0, r5
+ ldr r1, [r1, #0x0]
+ mov r2, r4
+ ldrh r1, [r1, #0x8]
+ mov r1, r6, lsl r1
+ add r1, r1, #0xa000000
+ bl CTRDGi_VerifyFlashSectorCore
+ ldr r3, _020DC12C ; =0x04000204
+ ldr r1, _020DC128 ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r7
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DC128: .word 0x021D6B0C
+_020DC12C: .word 0x04000204
+_020DC130: .word 0x021D6B20
+
+ arm_func_start CTRDGi_VerifyFlashSectorCore
+CTRDGi_VerifyFlashSectorCore: ; 0x020DC134
+ cmp r2, #0x0
+ sub r2, r2, #0x1
+ beq _020DC160
+_020DC140:
+ ldrb r12, [r1], #0x1
+ ldrb r3, [r0], #0x1
+ cmp r12, r3
+ subne r0, r1, #0x1
+ bxne lr
+ cmp r2, #0x0
+ sub r2, r2, #0x1
+ bne _020DC140
+_020DC160:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start CTRDGi_ReadAgbFlashCore
+CTRDGi_ReadAgbFlashCore: ; 0x020DC168
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x28
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DC25C ; =0x021D6B0C
+ ldr r1, [r5, #0x0]
+ ldrh r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldrh r7, [sp, #0x20]
+ ldr r6, [sp, #0x14]
+ ldr r5, [sp, #0x1c]
+ ldr r4, [sp, #0x18]
+ bl OS_LockCartridge
+ ldr r3, _020DC260 ; =0x04000204
+ ldr r0, _020DC264 ; =0x021D6B20
+ ldrh r2, [r3, #0x0]
+ ldrh r1, [r3, #0x0]
+ and r8, r2, #0x3
+ bic r1, r1, #0x3
+ orr r1, r1, #0x3
+ strh r1, [r3, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x20000
+ bne _020DC1F4
+ mov r0, r7, lsl #0xc
+ mov r0, r0, lsr #0x10
+ bl CTRDGi_SetFlashBankMx
+ and r0, r7, #0xf
+ mov r0, r0, lsl #0x10
+ mov r7, r0, lsr #0x10
+_020DC1F4:
+ ldr r0, _020DC264 ; =0x021D6B20
+ cmp r4, #0x0
+ ldr r0, [r0, #0x0]
+ sub r4, r4, #0x1
+ ldrh r0, [r0, #0x8]
+ mov r0, r7, lsl r0
+ add r0, r0, #0xa000000
+ add r1, r6, r0
+ beq _020DC22C
+_020DC218:
+ ldrb r0, [r1], #0x1
+ cmp r4, #0x0
+ sub r4, r4, #0x1
+ strb r0, [r5], #0x1
+ bne _020DC218
+_020DC22C:
+ ldr r2, _020DC260 ; =0x04000204
+ ldr r0, _020DC25C ; =0x021D6B0C
+ ldrh r1, [r2, #0x0]
+ bic r1, r1, #0x3
+ orr r1, r1, r8
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, #0x0
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020DC25C: .word 0x021D6B0C
+_020DC260: .word 0x04000204
+_020DC264: .word 0x021D6B20
+
+ arm_func_start CTRDGi_PollingSR1MCOMMON
+CTRDGi_PollingSR1MCOMMON: ; 0x020DC268
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, #0x0
+ bl StartFlashTimer
+ ldr r4, _020DC318 ; =0x021D6B10
+_020DC284:
+ bl CheckFlashTimer
+ mov r0, r7
+ bl CTRDGi_ReadSrFunc
+ cmp r0, r6
+ beq _020DC300
+ ands r0, r0, #0x20
+ beq _020DC2CC
+ mov r0, r7
+ bl CTRDGi_ReadSrFunc
+_020DC2A8: ; 0x020DC2A8
+ cmp r6, r0
+ beq _020DC300
+ orr r0, r8, #0xa000
+ mov r0, r0, lsl #0x10
+ ldr r1, _020DC31C ; =0x0A005555
+ mov r2, #0xf0
+ strb r2, [r1, #0x0]
+ mov r5, r0, lsr #0x10
+ b _020DC300
+_020DC2CC:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020DC284
+ mov r0, r7
+ bl CTRDGi_ReadSrFunc
+_020DC2E0: ; 0x020DC2E0
+ cmp r6, r0
+ beq _020DC300
+ orr r0, r8, #0xc000
+ mov r0, r0, lsl #0x10
+ ldr r1, _020DC31C ; =0x0A005555
+ mov r2, #0xf0
+ strb r2, [r1, #0x0]
+ mov r5, r0, lsr #0x10
+_020DC300:
+ bl CTRDG_IsExisting
+_020DC304: ; 0x020DC304
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ mov r0, r5
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020DC318: .word 0x021D6B10
+_020DC31C: .word 0x0A005555
+
+ arm_func_start CTRDGi_PollingSR512kCOMMON
+CTRDGi_PollingSR512kCOMMON: ; 0x020DC320
+ stmdb sp!, {r4-r8,lr}
+ mov r4, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, #0x0
+ bl StartFlashTimer
+ ldr r5, _020DC3A8 ; =0x021D6B10
+_020DC33C:
+ mov r0, r8
+ bl CTRDGi_ReadSrFunc
+ cmp r0, r7
+ beq _020DC390
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _020DC33C
+ mov r0, r8
+ bl CTRDGi_ReadSrFunc
+_020DC360: ; 0x020DC360
+ cmp r7, r0
+ beq _020DC390
+ ldr r0, _020DC3AC ; =0x021D6B20
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0xc2
+ ldreq r0, _020DC3B0 ; =0x0A005555
+ moveq r1, #0xf0
+ streqb r1, [r0, #0x0]
+ orr r0, r4, #0xc000
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+_020DC390:
+ bl CTRDG_IsExisting
+_020DC394: ; 0x020DC394
+ cmp r0, #0x0
+ moveq r6, #0x1000
+ mov r0, r6
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020DC3A8: .word 0x021D6B10
+_020DC3AC: .word 0x021D6B20
+_020DC3B0: .word 0x0A005555
+
+ arm_func_start CTRDGi_ReadSrFunc
+CTRDGi_ReadSrFunc:
+ ldrb r0, [r0, #0x0]
+ bx lr
+
+ arm_func_start CheckFlashTimer
+CheckFlashTimer: ; 0x020DC3BC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_GetTick
+ ldr r3, _020DC420 ; =0x021D6B44
+ ldr r2, _020DC424 ; =0x000082EA
+ ldr r12, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ subs r12, r0, r12
+ sbc r0, r1, r3
+ mov r1, r0, lsl #0x6
+ orr r1, r1, r12, lsr #0x1a
+ mov r0, r12, lsl #0x6
+ mov r3, #0x0
+ bl _ll_udiv
+ ldr r2, _020DC428 ; =0x021D6B3C
+ ldr r3, [r2, #0x4]
+ ldr r2, [r2, #0x0]
+ cmp r3, r1
+ cmpeq r2, r0
+ ldrls r0, _020DC42C ; =0x021D6B10
+ movls r1, #0x1
+ strlsh r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC420: .word 0x021D6B44
+_020DC424: .word 0x000082EA
+_020DC428: .word 0x021D6B3C
+_020DC42C: .word 0x021D6B10
+
+ arm_func_start StartFlashTimer
+StartFlashTimer: ; 0x020DC430
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020DC47C ; =0x021D6B28
+ ldr r2, _020DC480 ; =0x021D6B10
+ mov r3, #0x0
+ ldr r1, [r1, #0x0]
+ strh r3, [r2, #0x0]
+ mov r0, r0, lsl #0x1
+ ldrh r1, [r1, r0]
+ ldr r0, _020DC484 ; =0x021D6B3C
+ str r1, [r0, #0x0]
+ str r3, [r0, #0x4]
+ bl OS_GetTick
+ ldr r2, _020DC488 ; =0x021D6B44
+ str r0, [r2, #0x0]
+ str r1, [r2, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC47C: .word 0x021D6B28
+_020DC480: .word 0x021D6B10
+_020DC484: .word 0x021D6B3C
+_020DC488: .word 0x021D6B44
+
+ arm_func_start CTRDGi_ReadFlashID
+CTRDGi_ReadFlashID: ; 0x020DC48C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020DC590 ; =0x04000208
+ mov r0, #0x0
+ ldrh r2, [r5, #0x0]
+ ldr r1, _020DC594 ; =0x021D6B38
+ ldr r4, _020DC598 ; =0x0A005555
+ strh r0, [r5, #0x0]
+ str r2, [r1, #0x0]
+ mov r3, #0xaa
+ ldr r2, _020DC59C ; =0x0A002AAA
+ strb r3, [r4, #0x0]
+ mov r3, #0x55
+ strb r3, [r2, #0x0]
+ mov r2, #0x90
+ strb r2, [r4, #0x0]
+ ldrh r2, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ strh r1, [r5, #0x0]
+ bl StartFlashTimer
+ ldr r4, _020DC5A0 ; =0x021D6B10
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020DC4FC
+_020DC4EC:
+ bl CheckFlashTimer
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020DC4EC
+_020DC4FC:
+ ldr r0, _020DC5A4 ; =0x0A000001
+ bl CTRDGi_ReadSrFunc
+ mov r4, r0, lsl #0x18
+ mov r0, #0xa000000
+ bl CTRDGi_ReadSrFunc
+ ldr ip, _020DC590 ; =0x04000208
+ orr r4, r0, r4, lsr #0x10
+ ldrh r2, [r12, #0x0]
+ mov r0, #0x0
+ ldr r1, _020DC594 ; =0x021D6B38
+ strh r0, [r12, #0x0]
+ ldr r5, _020DC598 ; =0x0A005555
+ str r2, [r1, #0x0]
+ mov r3, #0xaa
+ ldr r2, _020DC59C ; =0x0A002AAA
+ strb r3, [r5, #0x0]
+ mov r3, #0x55
+ strb r3, [r2, #0x0]
+ mov r2, #0xf0
+ strb r2, [r5, #0x0]
+ strb r2, [r5, #0x0]
+ ldrh r2, [r12, #0x0]
+ ldr r1, [r1, #0x0]
+ strh r1, [r12, #0x0]
+ bl StartFlashTimer
+ ldr r5, _020DC5A0 ; =0x021D6B10
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _020DC580
+_020DC570:
+ bl CheckFlashTimer
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _020DC570
+_020DC580:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DC590: .word 0x04000208
+_020DC594: .word 0x021D6B38
+_020DC598: .word 0x0A005555
+_020DC59C: .word 0x0A002AAA
+_020DC5A0: .word 0x021D6B10
+_020DC5A4: .word 0x0A000001
+
+ arm_func_start CTRDGi_SetFlashBankMx
+CTRDGi_SetFlashBankMx: ; 0x020DC5A8
+ ldr r3, _020DC5D4 ; =0x0A005555
+ mov r2, #0xaa
+ ldr r1, _020DC5D8 ; =0x0A002AAA
+ strb r2, [r3, #0x0]
+ mov r2, #0x55
+ strb r2, [r1, #0x0]
+ mov r1, #0xb0
+ strb r1, [r3, #0x0]
+ mov r1, #0xa000000
+ strb r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020DC5D4: .word 0x0A005555
+_020DC5D8: .word 0x0A002AAA
+
+ arm_func_start CTRDGi_WriteFlashSectorAsyncAT
+CTRDGi_WriteFlashSectorAsyncAT: ; 0x020DC5DC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ ldr r1, _020DC604 ; =CTRDGi_WriteFlashSectorCoreAT
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC604: .word CTRDGi_WriteFlashSectorCoreAT
+
+ arm_func_start CTRDGi_EraseFlashSectorAsyncAT
+CTRDGi_EraseFlashSectorAsyncAT: ; 0x020DC608
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov r2, r1
+ strh r0, [sp, #0x20]
+ ldr r1, _020DC630 ; =CTRDGi_EraseFlashSectorCoreAT
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC630: .word CTRDGi_EraseFlashSectorCoreAT
+
+ arm_func_start CTRDGi_WriteFlashSectorAT
+CTRDGi_WriteFlashSectorAT: ; 0x020DC634
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ bl CTRDGi_WriteFlashSectorCoreAT
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashSectorAT
+CTRDGi_EraseFlashSectorAT:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashSectorCoreAT
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_WriteFlash4KBAsyncAT
+CTRDGi_WriteFlash4KBAsyncAT: ; 0x020DC688
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ ldr r1, _020DC6B0 ; =CTRDGi_WriteFlash4KBCoreAT
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC6B0: .word CTRDGi_WriteFlash4KBCoreAT
+
+ arm_func_start CTRDGi_EraseFlash4KBAsyncAT
+CTRDGi_EraseFlash4KBAsyncAT: ; 0x020DC6B4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov r2, r1
+ strh r0, [sp, #0x20]
+ ldr r1, _020DC6DC ; =CTRDGi_EraseFlash4KBCoreAT
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC6DC: .word CTRDGi_EraseFlash4KBCoreAT
+
+ arm_func_start CTRDGi_EraseFlashChipAsyncAT
+CTRDGi_EraseFlashChipAsyncAT: ; 0x020DC6E0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ ldr r1, _020DC704 ; =CTRDGi_EraseFlashChipCoreAT
+ mov r2, r0
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DC704: .word CTRDGi_EraseFlashChipCoreAT
+
+ arm_func_start CTRDGi_WriteFlash4KBAT
+CTRDGi_WriteFlash4KBAT: ; 0x020DC708
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ bl CTRDGi_WriteFlash4KBCoreAT
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlash4KBAT
+CTRDGi_EraseFlash4KBAT: ; 0x020DC734
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlash4KBCoreAT
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashChipAT
+CTRDGi_EraseFlashChipAT: ; 0x020DC75C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashChipCoreAT
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_WriteFlash4KBCoreAT
+CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ ldrh r0, [sp, #0x20]
+ ldr r7, [sp, #0xc]
+ cmp r0, #0x10
+ addcs sp, sp, #0x24
+ ldrhs r0, _020DC85C ; =0x000080FF
+ ldmcsia sp!, {r4-r9,lr}
+ bxcs lr
+ ldr r1, _020DC860 ; =0x0210400C
+ mov r0, r0, lsl #0x15
+ ldr r1, [r1, #0x24]
+ ldr r4, _020DC864 ; =0x021D6B08
+ mov r8, r0, lsr #0x10
+ strh r1, [r4, #0x0]
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020DC84C
+ ldr r0, _020DC868 ; =0x02104048
+ ldr r6, [r0, #0x24]
+ mov r5, #0x2
+_020DC7F4:
+ mov r9, r5
+_020DC7F8:
+ mov r0, r8
+ mov r1, r7
+ bl CTRDGi_WriteFlashSectorAT
+ movs r12, r0
+ beq _020DC81C
+ sub r0, r9, #0x1
+ mov r0, r0, lsl #0x10
+ movs r9, r0, lsr #0x10
+ bne _020DC7F8
+_020DC81C:
+ cmp r12, #0x0
+ bne _020DC84C
+ ldrh r1, [r4, #0x0]
+ add r0, r8, #0x1
+ mov r0, r0, lsl #0x10
+ sub r1, r1, r6
+ strh r1, [r4, #0x0]
+ ldrh r1, [r4, #0x0]
+ add r7, r7, r6
+ mov r8, r0, lsr #0x10
+ cmp r1, #0x0
+ bne _020DC7F4
+_020DC84C:
+ mov r0, r12
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020DC85C: .word 0x000080FF
+_020DC860: .word 0x0210400C
+_020DC864: .word 0x021D6B08
+_020DC868: .word 0x02104048
+
+ arm_func_start CTRDGi_WriteFlashSectorCoreAT
+CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ add r4, sp, #0x0
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DC984 ; =0x021D6B0C
+ ldr r1, [r5, #0x0]
+ ldrh r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldr r4, [sp, #0xc]
+ bl OS_LockCartridge
+ ldr r5, _020DC988 ; =0x04000204
+ ldr r1, _020DC98C ; =0x021D6B20
+ ldrh r0, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ ldrh r2, [r5, #0x0]
+ ldr r3, [r1, #0x10]
+ ldr r1, _020DC990 ; =0x02104048
+ bic r2, r2, #0x3
+ orr r2, r2, r3
+ strh r2, [r5, #0x0]
+ ldr r5, _020DC994 ; =0x04000208
+ ldrh lr, [sp, #0x20]
+ ldrh r12, [r1, #0x28]
+ ldrh r2, [r5, #0x0]
+ mov r3, #0x0
+ mov lr, lr, lsl r12
+ strh r3, [r5, #0x0]
+ ldr ip, _020DC998 ; =0x0A005555
+ mov r5, #0xaa
+ strb r5, [r12, #0x0]
+ ldr r3, _020DC99C ; =0x0A002AAA
+ mov r5, #0x55
+ strb r5, [r3, #0x0]
+ mov r3, #0xa0
+ strb r3, [r12, #0x0]
+ ldr r3, [r1, #0x24]
+ and r5, r0, #0x3
+ cmp r3, #0x0
+ add r1, lr, #0xa000000
+ beq _020DC92C
+_020DC91C:
+ ldrb r0, [r4], #0x1
+ subs r3, r3, #0x1
+ strb r0, [r1], #0x1
+ bne _020DC91C
+_020DC92C:
+ ldr ip, _020DC994 ; =0x04000208
+ ldr r3, _020DC9A0 ; =0x021D6B24
+ ldrh r0, [r12, #0x0]
+ sub r1, r1, #0x1
+ mov r0, #0x1
+ strh r2, [r12, #0x0]
+ ldrb r2, [r4, #-0x1]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldr r3, _020DC988 ; =0x04000204
+ ldr r1, _020DC984 ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r5
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DC984: .word 0x021D6B0C
+_020DC988: .word 0x04000204
+_020DC98C: .word 0x021D6B20
+_020DC990: .word 0x02104048
+_020DC994: .word 0x04000208
+_020DC998: .word 0x0A005555
+_020DC99C: .word 0x0A002AAA
+_020DC9A0: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlash4KBCoreAT
+CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ ldrh r0, [sp, #0x20]
+ cmp r0, #0x10
+ addcs sp, sp, #0x24
+ ldrhs r0, _020DCA54 ; =0x000080FF
+ ldmcsia sp!, {r4-r7,lr}
+ bxcs lr
+ mov r0, r0, lsl #0x15
+ mov r5, r0, lsr #0x10
+ mov r6, #0x0
+ mov r4, #0x2
+_020DC9F4:
+ mov r7, r4
+_020DC9F8:
+ mov r0, r5
+ bl CTRDGi_EraseFlashSectorAT
+_020DCA00: ; 0x020DCA00
+ cmp r0, #0x0
+ beq _020DCA18
+ sub r1, r7, #0x1
+ mov r1, r1, lsl #0x10
+ movs r7, r1, lsr #0x10
+ bne _020DC9F8
+_020DCA18:
+ add r1, r5, #0x1
+ mov r1, r1, lsl #0x10
+ cmp r0, #0x0
+ mov r5, r1, lsr #0x10
+ addne sp, sp, #0x24
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ add r1, r6, #0x1
+ mov r1, r1, lsl #0x10
+ mov r6, r1, lsr #0x10
+ cmp r6, #0x20
+ blo _020DC9F4
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DCA54: .word 0x000080FF
+
+ arm_func_start CTRDGi_EraseFlashSectorCoreAT
+CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, [r5, #0x0]
+ ldr r1, _020DCB80 ; =0x02104048
+ str r0, [r4, #0x0]
+ ldr r0, _020DCB84 ; =0x021D6B0C
+ ldrh r2, [sp, #0x20]
+ ldrh r1, [r1, #0x28]
+ ldrh r0, [r0, #0x0]
+ mov r1, r2, lsl r1
+ add r5, r1, #0xa000000
+ bl OS_LockCartridge
+ ldr r4, _020DCB88 ; =0x04000204
+ ldr r1, _020DCB8C ; =0x021D6B20
+ ldrh r0, [r4, #0x0]
+ ldr r2, [r1, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r2, [r2, #0x10]
+ ldr r3, _020DCB90 ; =0x04000208
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r4, #0x0]
+ ldrh r2, [r3, #0x0]
+ mov r1, #0x0
+ ldr r4, _020DCB94 ; =0x0A005555
+ strh r1, [r3, #0x0]
+ mov r3, #0xaa
+ strb r3, [r4, #0x0]
+ ldr r1, _020DCB98 ; =0x0A002AAA
+ mov r3, #0x55
+ strb r3, [r1, #0x0]
+ mov r3, #0xa0
+ strb r3, [r4, #0x0]
+ ldr r1, _020DCB80 ; =0x02104048
+ and r4, r0, #0x3
+ ldr r1, [r1, #0x24]
+ cmp r1, #0x0
+ beq _020DCB18
+ mov r0, #0xff
+_020DCB0C:
+ strb r0, [r5], #0x1
+ subs r1, r1, #0x1
+ bne _020DCB0C
+_020DCB18:
+ ldr ip, _020DCB90 ; =0x04000208
+ ldr r3, _020DCB9C ; =0x021D6B24
+ ldrh r0, [r12, #0x0]
+ sub r1, r5, #0x1
+ strh r2, [r12, #0x0]
+ ldr r3, [r3, #0x0]
+ mov r0, #0x1
+ mov r2, #0xff
+ blx r3
+ ldr r2, _020DCB88 ; =0x04000204
+ movs r5, r0
+ ldrh r1, [r2, #0x0]
+ andne r0, r5, #0xff00
+ orrne r0, r0, #0x2
+ movne r0, r0, lsl #0x10
+ bic r1, r1, #0x3
+ movne r5, r0, lsr #0x10
+ orr r1, r1, r4
+ ldr r0, _020DCB84 ; =0x021D6B0C
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r5
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DCB80: .word 0x02104048
+_020DCB84: .word 0x021D6B0C
+_020DCB88: .word 0x04000204
+_020DCB8C: .word 0x021D6B20
+_020DCB90: .word 0x04000208
+_020DCB94: .word 0x0A005555
+_020DCB98: .word 0x0A002AAA
+_020DCB9C: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlashChipCoreAT
+CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020DCC7C ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r4, _020DCC80 ; =0x04000204
+ ldr r0, _020DCC84 ; =0x021D6B20
+ ldrh r3, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r2, [r0, #0x10]
+ ldr r0, _020DCC88 ; =0x04000208
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r4, #0x0]
+ ldrh r4, [r0, #0x0]
+ mov r2, #0x0
+ ldr r1, _020DCC8C ; =0x021D6B38
+ strh r2, [r0, #0x0]
+ ldr lr, _020DCC90 ; =0x0A005555
+ str r4, [r1, #0x0]
+ mov r5, #0xaa
+ ldr r4, _020DCC94 ; =0x0A002AAA
+ strb r5, [lr, #0x0]
+ mov r12, #0x55
+ strb r12, [r4, #0x0]
+ mov r2, #0x80
+ strb r2, [lr, #0x0]
+ strb r5, [lr, #0x0]
+ strb r12, [r4, #0x0]
+ mov r2, #0x10
+ strb r2, [lr, #0x0]
+ ldrh r2, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ ldr r1, _020DCC98 ; =0x021D6B24
+ strh r2, [r0, #0x0]
+ ldr r4, [r1, #0x0]
+ mov r0, #0x3
+ mov r1, #0xa000000
+ mov r2, #0xff
+ and r5, r3, #0x3
+ blx r4
+ ldr r3, _020DCC80 ; =0x04000204
+ ldr r1, _020DCC7C ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r5
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DCC7C: .word 0x021D6B0C
+_020DCC80: .word 0x04000204
+_020DCC84: .word 0x021D6B20
+_020DCC88: .word 0x04000208
+_020DCC8C: .word 0x021D6B38
+_020DCC90: .word 0x0A005555
+_020DCC94: .word 0x0A002AAA
+_020DCC98: .word 0x021D6B24
+
+ arm_func_start CTRDGi_WriteFlashSectorAsyncLE
+CTRDGi_WriteFlashSectorAsyncLE: ; 0x020DCC9C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ ldr r1, _020DCCC4 ; =CTRDGi_WriteFlashSectorCoreLE
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DCCC4: .word CTRDGi_WriteFlashSectorCoreLE
+
+ arm_func_start CTRDGi_EraseFlashSectorAsyncLE
+CTRDGi_EraseFlashSectorAsyncLE: ; 0x020DCCC8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov r2, r1
+ strh r0, [sp, #0x20]
+ ldr r1, _020DCCF0 ; =CTRDGi_EraseFlashSectorCoreLE
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DCCF0: .word CTRDGi_EraseFlashSectorCoreLE
+
+ arm_func_start CTRDGi_EraseFlashChipAsyncLE
+CTRDGi_EraseFlashChipAsyncLE: ; 0x020DCCF4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ ldr r1, _020DCD18 ; =CTRDGi_EraseFlashChipCoreLE
+ mov r2, r0
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DCD18: .word CTRDGi_EraseFlashChipCoreLE
+
+ arm_func_start CTRDGi_WriteFlashSectorLE
+CTRDGi_WriteFlashSectorLE: ; 0x020DCD1C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ bl CTRDGi_WriteFlashSectorCoreLE
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashSectorLE
+CTRDGi_EraseFlashSectorLE: ; 0x020DCD48
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashSectorCoreLE
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashChipLE
+CTRDGi_EraseFlashChipLE: ; 0x020DCD70
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashChipCoreLE
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_VerifyFlashErase
+CTRDGi_VerifyFlashErase: ; 0x020DCD94
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020DCE14 ; =0x021D6B0C
+ mov r4, r0
+ ldrh r0, [r2, #0x0]
+ mov r5, r1
+ bl OS_LockCartridge
+ ldr ip, _020DCE18 ; =0x04000204
+ ldr r0, _020DCE1C ; =0x021D6B20
+ ldrh r3, [r12, #0x0]
+ ldr r0, [r0, #0x0]
+ ldrh r1, [r12, #0x0]
+ ldr r2, [r0, #0x10]
+ mov r0, r4
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r12, #0x0]
+ and r6, r3, #0x3
+ mov r4, #0x0
+ blx r5
+ cmp r0, #0x0
+ ldr r2, _020DCE18 ; =0x04000204
+ ldr r0, _020DCE14 ; =0x021D6B0C
+ ldrh r1, [r2, #0x0]
+ ldrne r4, _020DCE20 ; =0x00008004
+ bic r1, r1, #0x3
+ orr r1, r1, r6
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020DCE14: .word 0x021D6B0C
+_020DCE18: .word 0x04000204
+_020DCE1C: .word 0x021D6B20
+_020DCE20: .word 0x00008004
+
+ arm_func_start CTRDGi_VerifyFlashCoreFF
+CTRDGi_VerifyFlashCoreFF: ; 0x020DCE24
+ ldr r1, _020DCE54 ; =0x021D6B20
+ ldr r1, [r1, #0x0]
+ ldr r2, [r1, #0x4]
+ cmp r2, #0x0
+ beq _020DCE4C
+_020DCE38:
+ ldrb r1, [r0], #0x1
+ cmp r1, #0xff
+ bne _020DCE4C
+ subs r2, r2, #0x1
+ bne _020DCE38
+_020DCE4C:
+ mov r0, r2
+ bx lr
+ .balign 4
+_020DCE54: .word 0x021D6B20
+
+ arm_func_start CTRDGi_WriteFlashSectorCoreLE
+CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x24
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ ldrh r7, [sp, #0x20]
+ ldr r6, [sp, #0xc]
+ cmp r7, #0x10
+ addcs sp, sp, #0x24
+ ldrhs r0, _020DD018 ; =0x000080FF
+ ldmcsia sp!, {r4-r9,lr}
+ bxcs lr
+ ldr r0, _020DD01C ; =0x021D6B20
+ mov r9, #0x0
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x8]
+ mov r0, r7, lsl r0
+ add r4, r0, #0xa000000
+ ldr r5, _020DD020 ; =CTRDGi_VerifyFlashCoreFF
+_020DCEB8:
+ mov r0, r7
+ bl CTRDGi_EraseFlashSectorLE
+ movs r8, r0
+ bne _020DCEE0
+ mov r0, r4
+ mov r1, r5
+ bl CTRDGi_VerifyFlashErase
+ mov r0, r0, lsl #0x10
+ movs r8, r0, lsr #0x10
+ beq _020DCF04
+_020DCEE0:
+ add r0, r9, #0x1
+ mov r0, r0, lsl #0x10
+ cmp r9, #0x50
+ mov r9, r0, lsr #0x10
+ bne _020DCEB8
+ add sp, sp, #0x24
+ mov r0, r8
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020DCF04:
+ mov r5, #0x1
+ cmp r9, #0x0
+ movne r5, #0x6
+ cmp r5, #0x1
+ mov r9, #0x1
+ blo _020DCF38
+_020DCF1C:
+ mov r0, r7
+ bl CTRDGi_EraseFlashSectorLE
+ add r0, r9, #0x1
+ mov r0, r0, lsl #0x10
+ mov r9, r0, lsr #0x10
+ cmp r9, r5
+ bls _020DCF1C
+_020DCF38:
+ ldr r0, _020DD024 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r5, _020DD028 ; =0x04000204
+ ldr r1, _020DD01C ; =0x021D6B20
+ ldrh r0, [r5, #0x0]
+ ldr r3, [r1, #0x0]
+ ldrh r2, [r5, #0x0]
+ ldr r3, [r3, #0x10]
+ ldr r7, _020DD02C ; =0x021D6B08
+ bic r2, r2, #0x3
+ orr r2, r2, r3
+ strh r2, [r5, #0x0]
+ ldr r1, [r1, #0x0]
+ ldr sb, _020DD030 ; =0x04000208
+ ldr r1, [r1, #0x4]
+ mov r2, #0x0
+ strh r1, [r7, #0x0]
+ ldrh r3, [r9, #0x0]
+ ldr r1, _020DD034 ; =0x021D6B38
+ and r5, r0, #0x3
+ strh r2, [r9, #0x0]
+ ldrh r0, [r7, #0x0]
+ str r3, [r1, #0x0]
+ cmp r0, #0x0
+ beq _020DCFD4
+_020DCFA0:
+ mov r0, r6
+ mov r1, r4
+ bl CTRDGi_ProgramFlashByteLE
+ movs r8, r0
+ bne _020DCFD4
+ ldrh r0, [r7, #0x0]
+ add r6, r6, #0x1
+ add r4, r4, #0x1
+ sub r0, r0, #0x1
+ strh r0, [r7, #0x0]
+ ldrh r0, [r7, #0x0]
+ cmp r0, #0x0
+ bne _020DCFA0
+_020DCFD4:
+ ldr r3, _020DD030 ; =0x04000208
+ ldr r0, _020DD034 ; =0x021D6B38
+ ldrh r1, [r3, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r2, _020DD028 ; =0x04000204
+ strh r0, [r3, #0x0]
+ ldrh r1, [r2, #0x0]
+ ldr r0, _020DD024 ; =0x021D6B0C
+ bic r1, r1, #0x3
+ orr r1, r1, r5
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r8
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020DD018: .word 0x000080FF
+_020DD01C: .word 0x021D6B20
+_020DD020: .word CTRDGi_VerifyFlashCoreFF
+_020DD024: .word 0x021D6B0C
+_020DD028: .word 0x04000204
+_020DD02C: .word 0x021D6B08
+_020DD030: .word 0x04000208
+_020DD034: .word 0x021D6B38
+
+ arm_func_start CTRDGi_ProgramFlashByteLE
+CTRDGi_ProgramFlashByteLE: ; 0x020DD038
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr ip, _020DD08C ; =0x0A005555
+ mov r3, #0xaa
+ ldr r2, _020DD090 ; =0x0A002AAA
+ strb r3, [r12, #0x0]
+ mov r3, #0x55
+ mov lr, r0
+ strb r3, [r2, #0x0]
+ mov r0, #0xa0
+ strb r0, [r12, #0x0]
+ ldrb r2, [lr, #0x0]
+ ldr r3, _020DD094 ; =0x021D6B24
+ mov r0, #0x1
+ strb r2, [r1, #0x0]
+ ldrb r2, [lr, #0x0]
+ ldr r3, [r3, #0x0]
+ blx r3
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD08C: .word 0x0A005555
+_020DD090: .word 0x0A002AAA
+_020DD094: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlashSectorCoreLE
+CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x28
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, [r5, #0x0]
+ str r0, [r4, #0x0]
+ ldrh r4, [sp, #0x20]
+ cmp r4, #0x10
+ addcs sp, sp, #0x28
+ ldrhs r0, _020DD1B8 ; =0x000080FF
+ ldmcsia sp!, {r4-r6,lr}
+ bxcs lr
+ ldr r0, _020DD1BC ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r6, _020DD1C0 ; =0x04000204
+ ldr r1, _020DD1C4 ; =0x021D6B20
+ ldrh r3, [r6, #0x0]
+ ldr r0, [r1, #0x0]
+ ldrh r2, [r6, #0x0]
+ ldr r5, [r0, #0x10]
+ ldr r0, _020DD1C8 ; =0x04000208
+ bic r2, r2, #0x3
+ orr r2, r2, r5
+ strh r2, [r6, #0x0]
+ ldr r1, [r1, #0x0]
+ ldrh r5, [r0, #0x0]
+ ldrh r12, [r1, #0x8]
+ mov r1, #0x0
+ ldr r2, _020DD1CC ; =0x021D6B38
+ strh r1, [r0, #0x0]
+ mov r6, r4, lsl r12
+ ldr lr, _020DD1D0 ; =0x0A005555
+ str r5, [r2, #0x0]
+ mov r5, #0xaa
+ ldr r4, _020DD1D4 ; =0x0A002AAA
+ strb r5, [lr, #0x0]
+ mov r12, #0x55
+ strb r12, [r4, #0x0]
+ mov r1, #0x80
+ strb r1, [lr, #0x0]
+ strb r5, [lr, #0x0]
+ strb r12, [r4, #0x0]
+ add r1, r6, #0xa000000
+ mov r4, #0x30
+ strb r4, [r1, #0x0]
+ ldrh r4, [r0, #0x0]
+ ldr r4, [r2, #0x0]
+ ldr r2, _020DD1D8 ; =0x021D6B24
+ strh r4, [r0, #0x0]
+ ldr r4, [r2, #0x0]
+ mov r0, #0x2
+ mov r2, #0xff
+ and r5, r3, #0x3
+ blx r4
+ ldr r3, _020DD1C0 ; =0x04000204
+ ldr r1, _020DD1BC ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r5
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020DD1B8: .word 0x000080FF
+_020DD1BC: .word 0x021D6B0C
+_020DD1C0: .word 0x04000204
+_020DD1C4: .word 0x021D6B20
+_020DD1C8: .word 0x04000208
+_020DD1CC: .word 0x021D6B38
+_020DD1D0: .word 0x0A005555
+_020DD1D4: .word 0x0A002AAA
+_020DD1D8: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlashChipCoreLE
+CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020DD2B8 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r4, _020DD2BC ; =0x04000204
+ ldr r0, _020DD2C0 ; =0x021D6B20
+ ldrh r3, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r2, [r0, #0x10]
+ ldr r0, _020DD2C4 ; =0x04000208
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r4, #0x0]
+ ldrh r4, [r0, #0x0]
+ mov r2, #0x0
+ ldr r1, _020DD2C8 ; =0x021D6B38
+ strh r2, [r0, #0x0]
+ ldr lr, _020DD2CC ; =0x0A005555
+ str r4, [r1, #0x0]
+ mov r5, #0xaa
+ ldr r4, _020DD2D0 ; =0x0A002AAA
+ strb r5, [lr, #0x0]
+ mov r12, #0x55
+ strb r12, [r4, #0x0]
+ mov r2, #0x80
+ strb r2, [lr, #0x0]
+ strb r5, [lr, #0x0]
+ strb r12, [r4, #0x0]
+ mov r2, #0x10
+ strb r2, [lr, #0x0]
+ ldrh r2, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ ldr r1, _020DD2D4 ; =0x021D6B24
+ strh r2, [r0, #0x0]
+ ldr r4, [r1, #0x0]
+ mov r0, #0x3
+ mov r1, #0xa000000
+ mov r2, #0xff
+ and r5, r3, #0x3
+ blx r4
+ ldr r3, _020DD2BC ; =0x04000204
+ ldr r1, _020DD2B8 ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r5
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DD2B8: .word 0x021D6B0C
+_020DD2BC: .word 0x04000204
+_020DD2C0: .word 0x021D6B20
+_020DD2C4: .word 0x04000208
+_020DD2C8: .word 0x021D6B38
+_020DD2CC: .word 0x0A005555
+_020DD2D0: .word 0x0A002AAA
+_020DD2D4: .word 0x021D6B24
+
+ arm_func_start CTRDGi_WriteFlashSectorAsyncMX
+CTRDGi_WriteFlashSectorAsyncMX: ; 0x020DD2D8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ ldr r1, _020DD300 ; =CTRDGi_WriteFlashSectorCoreMX
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD300: .word CTRDGi_WriteFlashSectorCoreMX
+
+ arm_func_start CTRDGi_EraseFlashSectorAsyncMX
+CTRDGi_EraseFlashSectorAsyncMX: ; 0x020DD304
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ mov r2, r1
+ strh r0, [sp, #0x20]
+ ldr r1, _020DD32C ; =CTRDGi_EraseFlashSectorCoreMX
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD32C: .word CTRDGi_EraseFlashSectorCoreMX
+
+ arm_func_start CTRDGi_EraseFlashChipAsyncMX
+CTRDGi_EraseFlashChipAsyncMX: ; 0x020DD330
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ ldr r1, _020DD354 ; =CTRDGi_EraseFlashChipCoreMX
+ mov r2, r0
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD354: .word CTRDGi_EraseFlashChipCoreMX
+
+ arm_func_start CTRDGi_WriteFlashSectorMX
+CTRDGi_WriteFlashSectorMX: ; 0x020DD358
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ bl CTRDGi_WriteFlashSectorCoreMX
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashSectorMX
+CTRDGi_EraseFlashSectorMX: ; 0x020DD384
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashSectorCoreMX
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_EraseFlashChipMX
+CTRDGi_EraseFlashChipMX: ; 0x020DD3AC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ add r0, sp, #0x0
+ bl CTRDGi_EraseFlashChipCoreMX
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_WriteFlashSectorCoreMX
+CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x28
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DD540 ; =0x021D6B20
+ ldr r1, [r5, #0x0]
+ ldr r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldrh r5, [sp, #0x20]
+ ldrh r0, [r0, #0xa]
+ ldr r4, [sp, #0xc]
+ cmp r5, r0
+ addcs sp, sp, #0x28
+ ldrhs r0, _020DD544 ; =0x000080FF
+ ldmcsia sp!, {r4-r8,lr}
+ bxcs lr
+ mov r0, r5
+ bl CTRDGi_EraseFlashSectorMX
+ movs r6, r0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ ldr r0, _020DD548 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r7, _020DD54C ; =0x04000204
+ ldr r0, _020DD540 ; =0x021D6B20
+ ldrh r3, [r7, #0x0]
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r7, #0x0]
+ mov r0, r5, lsl #0xc
+ ldr r2, [r2, #0x10]
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ mov r0, r0, lsr #0x10
+ strh r1, [r7, #0x0]
+ and r7, r3, #0x3
+ bl CTRDGi_SetFlashBankMx
+ ldr r0, _020DD540 ; =0x021D6B20
+ and r1, r5, #0xf
+ ldr r3, [r0, #0x0]
+ mov r0, r1, lsl #0x10
+ ldr r2, [r3, #0x4]
+ ldr r8, _020DD550 ; =0x021D6B08
+ ldr r1, _020DD554 ; =0x04000208
+ strh r2, [r8, #0x0]
+ ldrh r3, [r3, #0x8]
+ mov r5, r0, lsr #0x10
+ ldrh r2, [r1, #0x0]
+ mov r0, #0x0
+ mov r3, r5, lsl r3
+ strh r0, [r1, #0x0]
+ ldrh r1, [r8, #0x0]
+ ldr r0, _020DD558 ; =0x021D6B38
+ add r5, r3, #0xa000000
+ str r2, [r0, #0x0]
+ cmp r1, #0x0
+ beq _020DD4FC
+_020DD4C8:
+ mov r0, r4
+ mov r1, r5
+ bl CTRDGi_ProgramFlashByteMX
+ movs r6, r0
+ bne _020DD4FC
+ ldrh r0, [r8, #0x0]
+ add r4, r4, #0x1
+ add r5, r5, #0x1
+ sub r0, r0, #0x1
+ strh r0, [r8, #0x0]
+ ldrh r0, [r8, #0x0]
+ cmp r0, #0x0
+ bne _020DD4C8
+_020DD4FC:
+ ldr r3, _020DD554 ; =0x04000208
+ ldr r0, _020DD558 ; =0x021D6B38
+ ldrh r1, [r3, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r2, _020DD54C ; =0x04000204
+ strh r0, [r3, #0x0]
+ ldrh r1, [r2, #0x0]
+ ldr r0, _020DD548 ; =0x021D6B0C
+ bic r1, r1, #0x3
+ orr r1, r1, r7
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r6
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020DD540: .word 0x021D6B20
+_020DD544: .word 0x000080FF
+_020DD548: .word 0x021D6B0C
+_020DD54C: .word 0x04000204
+_020DD550: .word 0x021D6B08
+_020DD554: .word 0x04000208
+_020DD558: .word 0x021D6B38
+
+ arm_func_start CTRDGi_ProgramFlashByteMX
+CTRDGi_ProgramFlashByteMX: ; 0x020DD55C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr ip, _020DD5B0 ; =0x0A005555
+ mov r3, #0xaa
+ ldr r2, _020DD5B4 ; =0x0A002AAA
+ strb r3, [r12, #0x0]
+ mov r3, #0x55
+ mov lr, r0
+ strb r3, [r2, #0x0]
+ mov r0, #0xa0
+ strb r0, [r12, #0x0]
+ ldrb r2, [lr, #0x0]
+ ldr r3, _020DD5B8 ; =0x021D6B24
+ mov r0, #0x1
+ strb r2, [r1, #0x0]
+ ldrb r2, [lr, #0x0]
+ ldr r3, [r3, #0x0]
+ blx r3
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD5B0: .word 0x0A005555
+_020DD5B4: .word 0x0A002AAA
+_020DD5B8: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlashSectorCoreMX
+CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x34
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x10
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DD748 ; =0x021D6B20
+ ldr r1, [r5, #0x0]
+ ldr r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldrh r4, [sp, #0x30]
+ ldrh r0, [r0, #0xa]
+ cmp r4, r0
+ addcs sp, sp, #0x34
+ ldrhs r0, _020DD74C ; =0x000080FF
+ ldmcsia sp!, {r4-r11,lr}
+ bxcs lr
+ ldr r0, _020DD750 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r5, _020DD754 ; =0x04000204
+ ldr r0, _020DD748 ; =0x021D6B20
+ ldrh r3, [r5, #0x0]
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r5, #0x0]
+ mov r0, r4, lsl #0xc
+ ldr r2, [r2, #0x10]
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r5, #0x0]
+ and r1, r3, #0x3
+ mov r0, r0, lsr #0x10
+ str r1, [sp, #0x0]
+ bl CTRDGi_SetFlashBankMx
+ and r0, r4, #0xf
+ mov r0, r0, lsl #0x10
+ mov r9, r0, lsr #0x10
+ mov r0, #0x2
+ mov r10, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0xff
+ ldr r8, _020DD758 ; =0x04000208
+ mov r11, r10
+ mov r7, #0xaa
+ mov r6, #0x55
+ mov r5, #0x80
+ mov r4, #0x30
+ str r0, [sp, #0xc]
+_020DD684:
+ ldr r0, _020DD748 ; =0x021D6B20
+ ldrh r12, [r8, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r3, _020DD75C ; =0x021D6B38
+ ldrh r1, [r0, #0x8]
+ ldr r0, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ strh r11, [r8, #0x0]
+ str r12, [r3, #0x0]
+ ldr r3, _020DD760 ; =0x0A005555
+ mov r1, r9, lsl r1
+ strb r7, [r3, #0x0]
+ ldr r3, _020DD764 ; =0x0A002AAA
+ add r1, r1, #0xa000000
+ strb r6, [r3, #0x0]
+ ldr r3, _020DD760 ; =0x0A005555
+ strb r5, [r3, #0x0]
+ strb r7, [r3, #0x0]
+ ldr r3, _020DD764 ; =0x0A002AAA
+ strb r6, [r3, #0x0]
+ strb r4, [r1, #0x0]
+ ldrh r3, [r8, #0x0]
+ ldr r3, _020DD75C ; =0x021D6B38
+ ldr r3, [r3, #0x0]
+ strh r3, [r8, #0x0]
+ ldr r3, _020DD768 ; =0x021D6B24
+ ldr r3, [r3, #0x0]
+ blx r3
+ str r0, [sp, #0x4]
+ ands r0, r0, #0xa000
+ beq _020DD714
+ cmp r10, #0x0
+ addeq r0, r10, #0x1
+ moveq r0, r0, lsl #0x10
+ moveq r10, r0, lsr #0x10
+ beq _020DD684
+_020DD714:
+ ldr r2, _020DD754 ; =0x04000204
+ ldr r1, _020DD750 ; =0x021D6B0C
+ ldrh r0, [r2, #0x0]
+ bic r3, r0, #0x3
+ ldr r0, [sp, #0x0]
+ orr r0, r3, r0
+ strh r0, [r2, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ ldr r0, [sp, #0x4]
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020DD748: .word 0x021D6B20
+_020DD74C: .word 0x000080FF
+_020DD750: .word 0x021D6B0C
+_020DD754: .word 0x04000204
+_020DD758: .word 0x04000208
+_020DD75C: .word 0x021D6B38
+_020DD760: .word 0x0A005555
+_020DD764: .word 0x0A002AAA
+_020DD768: .word 0x021D6B24
+
+ arm_func_start CTRDGi_EraseFlashChipCoreMX
+CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020DD848 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r4, _020DD84C ; =0x04000204
+ ldr r0, _020DD850 ; =0x021D6B20
+ ldrh r3, [r4, #0x0]
+ ldr r0, [r0, #0x0]
+ ldrh r1, [r4, #0x0]
+ ldr r2, [r0, #0x10]
+ ldr r0, _020DD854 ; =0x04000208
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r4, #0x0]
+ ldrh r4, [r0, #0x0]
+ mov r2, #0x0
+ ldr r1, _020DD858 ; =0x021D6B38
+ strh r2, [r0, #0x0]
+ ldr lr, _020DD85C ; =0x0A005555
+ str r4, [r1, #0x0]
+ mov r5, #0xaa
+ ldr r4, _020DD860 ; =0x0A002AAA
+ strb r5, [lr, #0x0]
+ mov r12, #0x55
+ strb r12, [r4, #0x0]
+ mov r2, #0x80
+ strb r2, [lr, #0x0]
+ strb r5, [lr, #0x0]
+ strb r12, [r4, #0x0]
+ mov r2, #0x10
+ strb r2, [lr, #0x0]
+ ldrh r2, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ ldr r1, _020DD864 ; =0x021D6B24
+ strh r2, [r0, #0x0]
+ ldr r4, [r1, #0x0]
+ mov r0, #0x3
+ mov r1, #0xa000000
+ mov r2, #0xff
+ and r5, r3, #0x3
+ blx r4
+ ldr r3, _020DD84C ; =0x04000204
+ ldr r1, _020DD848 ; =0x021D6B0C
+ ldrh r2, [r3, #0x0]
+ mov r4, r0
+ bic r0, r2, #0x3
+ orr r0, r0, r5
+ strh r0, [r3, #0x0]
+ ldrh r0, [r1, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DD848: .word 0x021D6B0C
+_020DD84C: .word 0x04000204
+_020DD850: .word 0x021D6B20
+_020DD854: .word 0x04000208
+_020DD858: .word 0x021D6B38
+_020DD85C: .word 0x0A005555
+_020DD860: .word 0x0A002AAA
+_020DD864: .word 0x021D6B24
+
+ arm_func_start FUN_020DD868
+FUN_020DD868: ; 0x020DD868
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ str r1, [sp, #0xc]
+ strh r0, [sp, #0x20]
+ ldr r1, _020DD890 ; =FUN_020DD8C0
+ add r0, sp, #0x0
+ bl CTRDGi_SetTask
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DD890: .word FUN_020DD8C0
+
+ arm_func_start FUN_020DD894
+FUN_020DD894: ; 0x020DD894
+ stmdb sp!, {lr}
+ sub sp, sp, #0x24
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ str r1, [sp, #0xc]
+ bl FUN_020DD8C0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x24
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FUN_020DD8C0
+FUN_020DD8C0: ; 0x020DD8C0
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x28
+ mov r5, r0
+ ldmia r5!, {r0-r3}
+ add r4, sp, #0x0
+ stmia r4!, {r0-r3}
+ ldmia r5!, {r0-r3}
+ stmia r4!, {r0-r3}
+ ldr r0, _020DD9E8 ; =0x021D6B20
+ ldr r1, [r5, #0x0]
+ ldr r0, [r0, #0x0]
+ str r1, [r4, #0x0]
+ ldrh r5, [sp, #0x20]
+ ldrh r0, [r0, #0xa]
+ ldr r4, [sp, #0xc]
+ cmp r5, r0
+ addcs sp, sp, #0x28
+ ldrhs r0, _020DD9EC ; =0x000080FF
+ ldmcsia sp!, {r4-r8,lr}
+ bxcs lr
+ mov r0, r5
+ bl CTRDGi_EraseFlashSectorLE
+ movs r6, r0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ ldr r0, _020DD9F0 ; =0x021D6B0C
+ ldrh r0, [r0, #0x0]
+ bl OS_LockCartridge
+ ldr r7, _020DD9F4 ; =0x04000204
+ ldr r0, _020DD9E8 ; =0x021D6B20
+ ldrh r3, [r7, #0x0]
+ ldr r2, [r0, #0x0]
+ ldrh r1, [r7, #0x0]
+ ldr r2, [r2, #0x10]
+ ldr r8, _020DD9F8 ; =0x021D6B08
+ bic r1, r1, #0x3
+ orr r1, r1, r2
+ strh r1, [r7, #0x0]
+ ldr r1, [r0, #0x0]
+ and r7, r3, #0x3
+ ldr r0, [r1, #0x4]
+ strh r0, [r8, #0x0]
+ ldrh r1, [r1, #0x8]
+ ldrh r0, [r8, #0x0]
+ mov r1, r5, lsl r1
+ cmp r0, #0x0
+ add r5, r1, #0xa000000
+ beq _020DD9B8
+_020DD984:
+ mov r0, r4
+ mov r1, r5
+ bl CTRDGi_ProgramFlashByteLE
+ movs r6, r0
+ bne _020DD9B8
+ ldrh r0, [r8, #0x0]
+ add r4, r4, #0x1
+ add r5, r5, #0x1
+ sub r0, r0, #0x1
+ strh r0, [r8, #0x0]
+ ldrh r0, [r8, #0x0]
+ cmp r0, #0x0
+ bne _020DD984
+_020DD9B8:
+ ldr r2, _020DD9F4 ; =0x04000204
+ ldr r0, _020DD9F0 ; =0x021D6B0C
+ ldrh r1, [r2, #0x0]
+ bic r1, r1, #0x3
+ orr r1, r1, r7
+ strh r1, [r2, #0x0]
+ ldrh r0, [r0, #0x0]
+ bl OS_UnlockCartridge2
+ mov r0, r6
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020DD9E8: .word 0x021D6B20
+_020DD9EC: .word 0x000080FF
+_020DD9F0: .word 0x021D6B0C
+_020DD9F4: .word 0x04000204
+_020DD9F8: .word 0x021D6B08
+
+ arm_func_start CTRDGi_SetTask
+CTRDGi_SetTask: ; 0x020DD9FC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020DDAA8 ; =0x021D6B50
+ mov r7, r0
+ mov r4, r1
+ mov r6, r2
+ ldr r5, [r3, #0x0]
+ bl CTRDGi_IsTaskAvailable
+_020DDA1C: ; 0x020DDA1C
+ cmp r0, #0x0
+ bne _020DDA28
+ bl OS_Terminate
+_020DDA28:
+ ldr r0, _020DDAAC ; =0x021D6B54
+ ldrb r0, [r0, #0x22]
+ cmp r0, #0x0
+ beq _020DDA3C
+ bl OS_Terminate
+_020DDA3C:
+ bl OS_DisableInterrupts
+ mov r1, #0x1
+ strb r1, [r7, #0x22]
+ str r4, [r7, #0x0]
+ add r1, r5, #0xc4
+ cmp r7, r1
+ mov r4, r0
+ ldreq r0, _020DDAA8 ; =0x021D6B50
+ str r6, [r7, #0x4]
+ moveq r1, #0x0
+ streq r1, [r0, #0x0]
+ ldr ip, _020DDAAC ; =0x021D6B54
+ ldmia r7!, {r0-r3}
+ mov r6, r12
+ stmia r12!, {r0-r3}
+ ldmia r7!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldr r1, [r7, #0x0]
+ mov r0, r5
+ str r1, [r12, #0x0]
+ str r6, [r5, #0xc0]
+ bl OS_WakeupThreadDirect
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DDAA8: .word 0x021D6B50
+_020DDAAC: .word 0x021D6B54
+
+ arm_func_start CTRDGi_TaskThread
+CTRDGi_TaskThread: ; 0x020DDAB0
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x28
+ ldr r6, _020DDB94 ; =0x021D6B54
+ ldr r5, _020DDB98 ; =0x021D6B50
+ mov r4, r0
+ add r9, sp, #0x0
+ mov r8, #0x0
+ mov r7, #0x24
+_020DDAD0:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r7
+ bl MI_CpuFill8
+ bl OS_DisableInterrupts
+ ldr r1, [r4, #0xc0]
+ mov r10, r0
+ cmp r1, #0x0
+ bne _020DDB08
+_020DDAF4:
+ mov r0, r8
+ bl OS_SleepThread
+ ldr r0, [r4, #0xc0]
+ cmp r0, #0x0
+ beq _020DDAF4
+_020DDB08:
+ ldr lr, [r4, #0xc0]
+ add r12, sp, #0x0
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldr r1, [lr, #0x0]
+ mov r0, r10
+ str r1, [r12, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r1, [sp, #0x0]
+ cmp r1, #0x0
+ beq _020DDB48
+ mov r0, r9
+ blx r1
+ str r0, [sp, #0x8]
+_020DDB48:
+ bl OS_DisableInterrupts
+ ldr r1, [sp, #0x4]
+ mov r10, r0
+ strb r8, [r6, #0x22]
+ cmp r1, #0x0
+ beq _020DDB68
+ mov r0, r9
+ blx r1
+_020DDB68:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ beq _020DDB84
+ mov r0, r10
+ str r8, [r4, #0xc0]
+ bl OS_RestoreInterrupts
+ b _020DDAD0
+_020DDB84:
+ bl OS_ExitThread
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020DDB94: .word 0x021D6B54
+_020DDB98: .word 0x021D6B50
+
+ arm_func_start CTRDGi_InitTaskInfo
+CTRDGi_InitTaskInfo:
+ ldr ip, _020DDBAC ; =MI_CpuFill8
+ mov r1, #0x0
+ mov r2, #0x24
+ bx r12
+ .balign 4
+_020DDBAC: .word MI_CpuFill8
+
+ arm_func_start CTRDGi_IsTaskAvailable
+CTRDGi_IsTaskAvailable:
+ ldr r0, _020DDBC8 ; =0x021D6B50
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ .balign 4
+_020DDBC8: .word 0x021D6B50
+
+ arm_func_start CTRDGi_InitTaskThread
+CTRDGi_InitTaskThread: ; 0x020DDBCC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020DDC4C ; =0x021D6B50
+ mov r4, r0
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020DDC38
+ add r0, r5, #0xc4
+ str r5, [r1, #0x0]
+ bl CTRDGi_InitTaskInfo
+ ldr r0, _020DDC50 ; =0x021D6B54
+ bl CTRDGi_InitTaskInfo
+_020DDC04: ; 0x020DDC04
+ mov r0, #0x0
+ str r0, [r5, #0xc0]
+ mov r2, #0x400
+ ldr r1, _020DDC54 ; =CTRDGi_TaskThread
+ ldr r3, _020DDC58 ; =0x021D6F78
+ mov r0, r5
+ str r2, [sp, #0x0]
+ mov r2, #0x14
+ str r2, [sp, #0x4]
+ mov r2, r5
+ bl OS_CreateThread
+ mov r0, r5
+ bl OS_WakeupThreadDirect
+_020DDC38:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DDC4C: .word 0x021D6B50
+_020DDC50: .word 0x021D6B54
+_020DDC54: .word CTRDGi_TaskThread
+_020DDC58: .word 0x021D6F78
diff --git a/asm/MATH_arm9.s b/asm/MATH_arm9.s
new file mode 100644
index 00000000..3b384077
--- /dev/null
+++ b/asm/MATH_arm9.s
@@ -0,0 +1,320 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start MATH_CountPopulation
+MATH_CountPopulation: ; 0x020DDC5C
+ ldr r1, _020DDC94 ; =0x55555555
+ ldr r2, _020DDC98 ; =0x33333333
+ and r1, r1, r0, lsr #0x1
+ sub r0, r0, r1
+ and r1, r0, r2
+ and r0, r2, r0, lsr #0x2
+ add r1, r1, r0
+ ldr r0, _020DDC9C ; =0x0F0F0F0F
+ add r1, r1, r1, lsr #0x4
+ and r0, r1, r0
+ add r0, r0, r0, lsr #0x8
+ add r0, r0, r0, lsr #0x10
+ and r0, r0, #0xff
+ bx lr
+ .balign 4
+_020DDC94: .word 0x55555555
+_020DDC98: .word 0x33333333
+_020DDC9C: .word 0x0F0F0F0F
+
+ arm_func_start MATH_CalcSHA1
+MATH_CalcSHA1: ; 0x020DDCA0
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x68
+ mov r6, r0
+ add r0, sp, #0x0
+ mov r5, r1
+ mov r4, r2
+ bl MATH_SHA1Init
+_020DDCBC: ; 0x020DDCBC
+ add r0, sp, #0x0
+ mov r1, r5
+ mov r2, r4
+ bl MATH_SHA1Update
+_020DDCCC: ; 0x020DDCCC
+ add r0, sp, #0x0
+ mov r1, r6
+ bl MATH_SHA1GetHash
+ add sp, sp, #0x68
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start MATH_CalcMD5
+MATH_CalcMD5: ; 0x020DDCE4
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x58
+ mov r6, r0
+ add r0, sp, #0x0
+ mov r5, r1
+ mov r4, r2
+ bl MATH_MD5Init
+_020DDD00: ; 0x020DDD00
+ add r0, sp, #0x0
+ mov r1, r5
+ mov r2, r4
+ bl MATH_MD5Update
+ add r1, sp, #0x0
+ mov r0, r6
+ bl MATH_MD5GetHash
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start MATH_CalcCRC32
+MATH_CalcCRC32: ; 0x020DDD28
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mvn r12, #0x0
+ mov r3, r2
+ add r1, sp, #0x0
+ mov r2, lr
+ str r12, [sp, #0x0]
+ bl MATHi_CRC32UpdateRev
+_020DDD4C: ; 0x020DDD4C
+ ldr r0, [sp, #0x0]
+ mvn r0, r0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MATH_CalcCRC16CCITT
+MATH_CalcCRC16CCITT: ; 0x020DDD60
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr ip, _020DDD94 ; =0x0000FFFF
+ mov lr, r1
+ mov r3, r2
+ add r1, sp, #0x0
+ mov r2, lr
+ strh r12, [sp, #0x0]
+ bl MATHi_CRC16Update
+ ldrh r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DDD94: .word 0x0000FFFF
+
+ arm_func_start MATH_CalcCRC16
+MATH_CalcCRC16: ; 0x020DDD98
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, #0x0
+ mov r3, r2
+ add r1, sp, #0x0
+ mov r2, lr
+ strh r12, [sp, #0x0]
+ bl MATHi_CRC16UpdateRev
+ ldrh r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MATH_CalcCRC8
+MATH_CalcCRC8: ; 0x020DDDCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, #0x0
+ mov r3, r2
+ add r1, sp, #0x0
+ mov r2, lr
+ strb r12, [sp, #0x0]
+ bl MATHi_CRC8Update
+_020DDDF0: ; 0x020DDDF0
+ ldrb r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MATHi_CRC32UpdateRev
+MATHi_CRC32UpdateRev:
+ stmdb sp!, {r4,lr}
+ cmp r3, #0x0
+ ldr r4, [r1, #0x0]
+ mov lr, #0x0
+ bls _020DDE38
+_020DDE14:
+ ldrb r12, [r2, #0x0]
+ add lr, lr, #0x1
+ cmp lr, r3
+ eor r12, r4, r12
+ and r12, r12, #0xff
+ ldr r12, [r0, r12, lsl #0x2]
+ add r2, r2, #0x1
+ eor r4, r12, r4, lsr #0x8
+ blo _020DDE14
+_020DDE38:
+ str r4, [r1, #0x0]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC32InitTableRev
+MATHi_CRC32InitTableRev: ; 0x020DDE44
+ stmdb sp!, {r4,lr}
+ mov lr, #0x0
+ mov r3, lr
+_020DDE50:
+ mov r4, lr
+ mov r12, r3
+_020DDE58:
+ ands r2, r4, #0x1
+ eorne r4, r1, r4, lsr #0x1
+ add r12, r12, #0x1
+ moveq r4, r4, lsr #0x1
+ cmp r12, #0x8
+ blo _020DDE58
+ str r4, [r0, lr, lsl #0x2]
+ add lr, lr, #0x1
+ cmp lr, #0x100
+ blo _020DDE50
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC16UpdateRev
+MATHi_CRC16UpdateRev: ; 0x020DDE88
+ stmdb sp!, {r4,lr}
+ cmp r3, #0x0
+ ldrh r4, [r1, #0x0]
+ mov lr, #0x0
+ bls _020DDEC4
+_020DDE9C:
+ ldrb r12, [r2, #0x0]
+ add lr, lr, #0x1
+ cmp lr, r3
+ eor r12, r4, r12
+ and r12, r12, #0xff
+ mov r12, r12, lsl #0x1
+ ldrh r12, [r0, r12]
+ add r2, r2, #0x1
+ eor r4, r12, r4, lsr #0x8
+ blo _020DDE9C
+_020DDEC4:
+ strh r4, [r1, #0x0]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC16Update
+MATHi_CRC16Update: ; 0x020DDED0
+ stmdb sp!, {r4,lr}
+ cmp r3, #0x0
+ ldrh r4, [r1, #0x0]
+ mov lr, #0x0
+ bls _020DDF0C
+_020DDEE4:
+ ldrb r12, [r2, #0x0]
+ add lr, lr, #0x1
+ cmp lr, r3
+ eor r12, r12, r4, lsr #0x8
+ and r12, r12, #0xff
+ mov r12, r12, lsl #0x1
+ ldrh r12, [r0, r12]
+ add r2, r2, #0x1
+ eor r4, r12, r4, lsl #0x8
+ blo _020DDEE4
+_020DDF0C:
+ strh r4, [r1, #0x0]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC16InitTableRev
+MATHi_CRC16InitTableRev: ; 0x020DDF18
+ stmdb sp!, {r4,lr}
+ mov lr, #0x0
+ mov r3, lr
+_020DDF24:
+ mov r4, lr
+ mov r12, r3
+_020DDF2C:
+ ands r2, r4, #0x1
+ eorne r4, r1, r4, lsr #0x1
+ add r12, r12, #0x1
+ moveq r4, r4, lsr #0x1
+ cmp r12, #0x8
+ blo _020DDF2C
+ mov r2, lr, lsl #0x1
+ add lr, lr, #0x1
+ strh r4, [r0, r2]
+ cmp lr, #0x100
+ blo _020DDF24
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC16InitTable
+MATHi_CRC16InitTable: ; 0x020DDF60
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, #0x0
+ mov r12, r4
+ mov r3, r4
+_020DDF74:
+ mov r5, r12
+ mov lr, r3
+_020DDF7C:
+ ands r2, r5, #0x8000
+ eorne r5, r1, r5, lsl #0x1
+ add lr, lr, #0x1
+ moveq r5, r5, lsl #0x1
+ cmp lr, #0x8
+ blo _020DDF7C
+ mov r2, r4, lsl #0x1
+ add r4, r4, #0x1
+ strh r5, [r0, r2]
+ cmp r4, #0x100
+ add r12, r12, #0x100
+ blo _020DDF74
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC8Update
+MATHi_CRC8Update:
+ stmdb sp!, {r4,lr}
+ cmp r3, #0x0
+ ldrb r4, [r1, #0x0]
+ mov lr, #0x0
+ bls _020DDFEC
+_020DDFCC:
+ ldrb r12, [r2, #0x0]
+ add lr, lr, #0x1
+ cmp lr, r3
+ eor r12, r4, r12
+ and r12, r12, #0xff
+ add r2, r2, #0x1
+ ldrb r4, [r0, r12]
+ blo _020DDFCC
+_020DDFEC:
+ strb r4, [r1, #0x0]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start MATHi_CRC8InitTable
+MATHi_CRC8InitTable: ; 0x020DDFF8
+ stmdb sp!, {r4,lr}
+ mov lr, #0x0
+ mov r3, lr
+_020DE004:
+ mov r4, lr
+ mov r12, r3
+_020DE00C:
+ ands r2, r4, #0x80
+ eorne r4, r1, r4, lsl #0x1
+ add r12, r12, #0x1
+ moveq r4, r4, lsl #0x1
+ cmp r12, #0x8
+ blo _020DE00C
+ strb r4, [r0, lr]
+ add lr, lr, #0x1
+ cmp lr, #0x100
+ blo _020DE004
+ ldmia sp!, {r4,lr}
+ bx lr
diff --git a/asm/PM_arm9.s b/asm/PM_arm9.s
new file mode 100644
index 00000000..0e654689
--- /dev/null
+++ b/asm/PM_arm9.s
@@ -0,0 +1,1125 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start PM_DeletePostSleepCallback
+PM_DeletePostSleepCallback: ; 0x020D4AE8
+ ldr ip, _020D4AF8 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4AFC ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4AF8: .word 0x020D4B78
+_020D4AFC: .word 0x021D54E0
+
+ arm_func_start PM_DeletePreSleepCallback
+PM_DeletePreSleepCallback: ; 0x020D4B00
+ ldr ip, _020D4B10 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4B14 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B10: .word 0x020D4B78
+_020D4B14: .word 0x021D54D8
+
+ arm_func_start PM_AppendPostSleepCallback
+PM_AppendPostSleepCallback: ; 0x020D4B18
+ ldr ip, _020D4B28 ; =FUN_020D4BC4
+ mov r1, r0
+ ldr r0, _020D4B2C ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4B28: .word FUN_020D4BC4
+_020D4B2C: .word 0x021D54E0
+
+ arm_func_start PM_PrependPreSleepCallback
+PM_PrependPreSleepCallback: ; 0x020D4B30
+ ldr ip, _020D4B40 ; =FUN_020D4C0C
+ mov r1, r0
+ ldr r0, _020D4B44 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B40: .word FUN_020D4C0C
+_020D4B44: .word 0x021D54D8
+
+ arm_func_start PMi_ExecuteList
+PMi_ExecuteList: ; 0x020D4B48
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020D4B58:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x0]
+ blx r1
+ ldr r4, [r4, #0x8]
+ cmp r4, #0x0
+ bne _020D4B58
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FUN_020D4B78
+FUN_020D4B78:
+ cmp r0, #0x0
+ bxeq lr
+ ldr r3, [r0]
+ mov r2, r3
+ cmp r3, #0x0
+ bxeq lr
+_020D4B90:
+ cmp r3, r1
+ bne _020D4BB0
+ cmp r3, r2
+ ldreq r1, [r3, #0x8]
+ streq r1, [r0]
+ ldrne r0, [r3, #0x8]
+ strne r0, [r2, #0x8]
+ bx lr
+_020D4BB0:
+ mov r2, r3
+ ldr r3, [r3, #0x8]
+ cmp r3, #0x0
+ bne _020D4B90
+ bx lr
+
+ arm_func_start FUN_020D4BC4
+FUN_020D4BC4: ; 0x020D4BC4
+ cmp r0, #0x0
+ bxeq lr
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ moveq r2, #0x0
+ streq r2, [r1, #0x8]
+ streq r1, [r0, #0x0]
+ bxeq lr
+ ldr r0, [r2, #0x8]
+ cmp r0, #0x0
+ beq _020D4C00
+_020D4BF0:
+ mov r2, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _020D4BF0
+_020D4C00:
+ str r0, [r1, #0x8]
+ str r1, [r2, #0x8]
+ bx lr
+
+ arm_func_start FUN_020D4C0C
+FUN_020D4C0C: ; 0x020D4C0C
+ cmp r0, #0x0
+ ldrne r2, [r0, #0x0]
+ strne r2, [r1, #0x8]
+ strne r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start PM_GetLEDPattern
+PM_GetLEDPattern: ; 0x020D4C20
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4C58 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PM_GetLEDPatternAsync
+_020D4C34:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmnefd sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+ ldr r0, [sp]
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020D4C58: .word 0x020D587C
+
+ arm_func_start PM_GetLEDPatternAsync
+PM_GetLEDPatternAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl PMi_Lock
+_020D4C70:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r1, _020D4CA4
+ ldr r0, _020D4CA8
+ str r5, [r1, #0x4]
+ str r4, [r1, #0x8]
+ str r6, [r1, #0xC]
+ bl PMi_SendPxiData
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D4CA4: .word 0x021D54E4
+_020D4CA8: .word 0x03006700
+
+ arm_func_start PMi_SendLEDPatternCommand
+PMi_SendLEDPatternCommand: ; 0x020D4CAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4CE4 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PMi_SendLEDPatternCommandAsync
+_020D4CC0:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmnefd sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+ ldr r0, [sp]
+ add sp, sp, #0x4
+ ldmfd sp!, {lr}
+ bx lr
+_020D4CE4: .word 0x020D587C
+
+ arm_func_start PMi_SendLEDPatternCommandAsync
+PMi_SendLEDPatternCommandAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl PMi_Lock
+_020D4CFC:
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, _020D4D34
+ ldr r1, _020D4D38
+ and r2, r6, #0xff
+ orr r0, r2, r0
+ str r5, [r1, #0x4]
+ str r4, [r1, #0x8]
+ bl PMi_SendPxiData
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D4D34: .word 0x03006600
+_020D4D38: .word 0x021D54E4
+
+ arm_func_start PM_GetLCDPower
+PM_GetLCDPower: ; 0x020D4D3C
+ ldr r0, _020D4D54 ; =0x04000304
+ ldrh r0, [r0, #0x0]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ .balign 4
+_020D4D54: .word 0x04000304
+
+ arm_func_start PM_SetLCDPower
+PM_SetLCDPower: ; 0x020D4D58
+ ldr ip, _020D4D74 ; =PMi_SetLCDPower
+ mov r1, #0x0
+ cmp r0, #0x1
+ movne r0, #0x0
+ mov r2, r1
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020D4D74: .word PMi_SetLCDPower
+
+ arm_func_start PMi_SetLCDPower
+PMi_SetLCDPower: ; 0x020D4D78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ beq _020D4E00
+ cmp r0, #0x1
+ bne _020D4E4C
+ cmp r2, #0x0
+ bne _020D4DC0
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldr r0, _020D4E60 ; =0x021D54DC
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ sub r0, r2, r0
+ cmp r0, #0x7
+ addls sp, sp, #0x4
+ movls r0, #0x0
+ ldmlsia sp!, {lr}
+ bxls lr
+_020D4DC0:
+ cmp r1, #0x0
+ beq _020D4DEC
+ cmp r3, #0x0
+ beq _020D4DDC
+ mov r0, r1
+ bl PMi_SetLED
+ b _020D4DEC
+_020D4DDC:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl PMi_SetLEDAsync
+_020D4DEC:
+ ldr r1, _020D4E64 ; =0x04000304
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x1
+ strh r0, [r1, #0x0]
+ b _020D4E4C
+_020D4E00:
+ ldr lr, _020D4E64 ; =0x04000304
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldrh r12, [lr, #0x0]
+ ldr r0, _020D4E60 ; =0x021D54DC
+ cmp r1, #0x0
+ bic r12, r12, #0x1
+ strh r12, [lr, #0x0]
+ ldr r2, [r2, #0x0]
+ str r2, [r0, #0x0]
+ beq _020D4E4C
+ cmp r3, #0x0
+ beq _020D4E3C
+ mov r0, r1
+ bl PMi_SetLED
+ b _020D4E4C
+_020D4E3C:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl PMi_SetLEDAsync
+_020D4E4C:
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4E5C: .word 0x027FFC3C
+_020D4E60: .word 0x021D54DC
+_020D4E64: .word 0x04000304
+
+ arm_func_start PM_GoSleepMode
+PM_GoSleepMode: ; 0x020D4E68
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r3, _020D5084 ; =0x021D54D8
+ mov r10, r0
+ ldr r0, [r3, #0x0]
+ mov r9, r1
+ mov r11, r2
+ mov r8, #0x0
+ bl PMi_ExecuteList
+ ldr r1, _020D5088 ; =0x04000208
+ mov r0, r8
+ ldrh r4, [r1, #0x0]
+ strh r0, [r1, #0x0]
+ bl OS_DisableInterrupts
+_020D4EA0:
+ str r0, [sp]
+ ldr r0, _020D508C
+ bl OS_DisableIrqMask
+ str r0, [sp, #0x4]
+ mov r0, #0x40000
+ bl OS_SetIrqMask
+ ldr r0, [sp]
+ bl OS_RestoreInterrupts
+ ldr r2, _020D5088
+ mov r1, #0x1
+ ldrh r0, [r2]
+ ands r0, sl, #0x8
+ strh r1, [r2]
+ beq _020D4EE8
+ ldr r0, _020D5090
+ ldrh r0, [r0]
+ cmp r0, #0x2
+ biceq sl, sl, #0x8
+_020D4EE8:
+ ands r0, sl, #0x10
+ beq _020D4EFC
+ bl CTRDG_IsExisting
+ cmp r0, #0x0
+ biceq sl, sl, #0x10
+_020D4EFC:
+ ldr r0, _020D5094
+ mov r1, #0x4000000
+ ldr r7, [r1]
+ ldr r6, [r0]
+ bl PM_GetLCDPower
+ str r0, [sp, #0x8]
+ add r0, sp, #0xC
+ add r1, sp, #0x10
+ bl PM_GetBackLight
+ mov r0, #0x2
+ mov r1, #0x0
+ bl FUN_020D526C
+ ldr r2, _020D5098
+ ldr r0, [r2]
+ str r0, [sp, #0x14]
+_020D4F38:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F38
+ ldr r0, [r2]
+ mov r2, #0x4000000
+ str r0, [sp, #0x14]
+ ldr r0, [r2]
+ ldr r1, _020D5094
+ bic r0, r0, #0x30000
+ str r0, [r2]
+ ldr r0, [r1]
+ bic r0, r0, #0x10000
+ str r0, [r1]
+ ldr r2, _020D5098
+_020D4F74:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F74
+ ldr r0, [r2]
+ str r0, [sp, #0x14]
+ ldr r2, _020D5098
+_020D4F90:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ beq _020D4F90
+ ldr r0, [sp, #0xC]
+ ldr r1, [sp, #0x10]
+ orr r0, sl, r0, lsl #0x5
+ orr r0, r0, r1, lsl #0x6
+ mov r0, r0, lsl #0x10
+ mov r5, r0, lsr #0x10
+ orr r0, r9, fp
+ mov r0, r0, lsl #0x10
+ mov r9, r0, lsr #0x10
+_020D4FC4:
+ mov r0, r5
+ mov r1, r9
+ bl PMi_SendSleepStart
+ cmp r0, #0x0
+ bne _020D4FC4
+ bl OS_Halt
+ ldr r0, _020D509C
+ bl OS_SpinWait
+ ands r0, sl, #0x8
+ beq _020D4FFC
+ ldr r0, _020D50A0
+ ldr r0, [r0]
+ ands r0, r0, #0x100000
+ movne r8, #0x1
+_020D4FFC:
+ cmp r8, #0x0
+ bne _020D5040
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x1
+ bne _020D5028
+ mov r0, #0x1
+ mov r1, r0
+ mov r2, r0
+ mov r3, #0x0
+ bl PMi_SetLCDPower
+ b _020D5030
+_020D5028:
+ mov r0, #0x1
+ bl PMi_SetLED
+_020D5030:
+ mov r1, #0x4000000
+ ldr r0, _020D5094
+ str r7, [r1]
+ str r6, [r0]
+_020D5040:
+ bl OS_DisableInterrupts
+ ldr r0, [sp, #0x4]
+ bl OS_SetIrqMask
+ ldr r0, [sp]
+ bl OS_RestoreInterrupts
+ ldr r1, _020D5088
+ cmp r8, #0x0
+ ldrh r0, [r1]
+ strh r4, [r1]
+ beq _020D506C
+ bl PM_ForceToPowerOff
+_020D506C:
+ ldr r0, _020D50A4
+ ldr r0, [r0]
+ bl PMi_ExecuteList
+ add sp, sp, #0x1C
+ ldmia sp!, {r4-r11, lr}
+ bx lr
+_020D5084: .word 0x021D54D8
+_020D5088: .word 0x04000208
+_020D508C: .word 0x003FFFFF
+_020D5090: .word 0x027FFC40
+_020D5094: .word 0x04001000
+_020D5098: .word 0x027FFC3C
+_020D509C: .word 0x00996A00
+_020D50A0: .word 0x04000214
+_020D50A4: .word 0x021D54E0
+
+
+ arm_func_start PMi_SendPxiData
+PMi_SendPxiData: ; 0x020D50A8
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, #0x8
+ mov r4, #0x0
+_020D50B8:
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020D50C8:
+ cmp r0, #0
+ bne _020D50B8
+ ldmia sp!, {r4-r6, lr}
+ bx lr
+
+ arm_func_start PM_GetBackLight
+PM_GetBackLight: ; 0x020D50D8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r5, r0
+ add r1, sp, #0x0
+ mov r0, #0x0
+ bl PMi_ReadRegister
+_020D50F4:
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r5, #0x0
+ beq _020D5120
+ ldrh r1, [sp]
+ ands r1, r1, #0x8
+ movne r1, #0x1
+ moveq r1, #0x0
+ str r1, [r5]
+_020D5120:
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldrh r1, [sp]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ str r1, [r4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start PM_SetAmpGain
+PM_SetAmpGain: ; 0x020D5150
+ ldr ip, _020D5164 ; =FUN_020D53DC
+ mov r0, r0, lsl #0x10
+ mov r1, r0, lsr #0x10
+ mov r0, #0x3
+ bx r12
+ .balign 4
+_020D5164: .word FUN_020D53DC
+
+ arm_func_start PM_SetAmp
+PM_SetAmp: ; 0x020D5168
+ ldr ip, _020D517C ; =FUN_020D53DC
+ mov r0, r0, lsl #0x10
+ mov r1, r0, lsr #0x10
+ mov r0, #0x2
+ bx r12
+ .balign 4
+_020D517C: .word FUN_020D53DC
+
+ arm_func_start PM_ForceToPowerOff
+PM_ForceToPowerOff: ; 0x020D5180
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D51B8 ; =PMi_DummyCallback
+ add r1, sp, #0x0
+ bl PM_ForceToPowerOffAsync
+_020D5194: ; 0x020D5194
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+_020D51A8: ; 0x020D51A8
+ ldr r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D51B8: .word PMi_DummyCallback
+
+ arm_func_start PM_ForceToPowerOffAsync
+PM_ForceToPowerOffAsync:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ mov r7, r0
+ ldr r0, _020D5268 ; =0x00996A00
+ mov r6, r1
+ bl OS_SpinWait
+ bl PM_GetLCDPower
+ cmp r0, #0x1
+ beq _020D524C
+ add r0, sp, #0x0
+ add r1, sp, #0x4
+ bl PM_GetBackLight
+_020D51EC: ; 0x020D51EC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _020D5204
+ mov r0, #0x0
+ mov r1, r0
+ bl PM_SetBackLight
+_020D5204:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020D521C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl PM_SetBackLight
+_020D521C:
+ mov r0, #0x1
+ bl PM_SetLCDPower
+_020D5224: ; 0x020D5224
+ cmp r0, #0x0
+ bne _020D524C
+ ldr r5, _020D5268 ; =0x00996A00
+ mov r4, #0x1
+_020D5234:
+ mov r0, r5
+ bl OS_SpinWait
+ mov r0, r4
+ bl PM_SetLCDPower
+_020D5244: ; 0x020D5244
+ cmp r0, #0x0
+ beq _020D5234
+_020D524C:
+ mov r1, r7
+ mov r2, r6
+ mov r0, #0xe
+ bl PM_SendUtilityCommandAsync
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D5268: .word 0x00996A00
+
+ arm_func_start PM_SetBackLight
+PM_SetBackLight: ; 0x020D526C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020D52A4 ; =PMi_DummyCallback
+ add r3, sp, #0x0
+ bl PM_SetBackLightAsync
+_020D5280: ; 0x020D5280
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+_020D5294: ; 0x020D5294
+ ldr r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D52A4: .word PMi_DummyCallback
+
+ arm_func_start PM_SetBackLightAsync
+PM_SetBackLightAsync:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ mov r12, #0x0
+ bne _020D52D0
+ cmp r1, #0x1
+ moveq r12, #0x6
+ cmp r1, #0x0
+ moveq r12, #0x7
+ b _020D5304
+_020D52D0:
+ cmp r0, #0x1
+ bne _020D52EC
+ cmp r1, #0x1
+ moveq r12, #0x4
+ cmp r1, #0x0
+ moveq r12, #0x5
+ b _020D5304
+_020D52EC:
+ cmp r0, #0x2
+ bne _020D5304
+ cmp r1, #0x1
+ moveq r12, #0x8
+ cmp r1, #0x0
+ moveq r12, #0x9
+_020D5304:
+ cmp r12, #0x0
+ addeq sp, sp, #0x4
+ ldreq r0, _020D5334 ; =0x0000FFFF
+ ldmeqia sp!, {lr}
+ bxeq lr
+ mov r1, r2
+ mov r0, r12
+ mov r2, r3
+ bl PM_SendUtilityCommandAsync
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5334: .word 0x0000FFFF
+
+ arm_func_start PMi_SetLED
+PMi_SetLED: ; 0x020D5338
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D5370 ; =PMi_DummyCallback
+ add r2, sp, #0x0
+ bl PMi_SetLEDAsync
+_020D534C: ; 0x020D534C
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+_020D5360: ; 0x020D5360
+ ldr r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5370: .word PMi_DummyCallback
+
+ arm_func_start PMi_SetLEDAsync
+PMi_SetLEDAsync:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x1
+ beq _020D5398
+ cmp r0, #0x2
+ beq _020D53A8
+ cmp r0, #0x3
+ beq _020D53A0
+ b _020D53B0
+_020D5398:
+ mov r0, #0x1
+ b _020D53B4
+_020D53A0:
+ mov r0, #0x2
+ b _020D53B4
+_020D53A8:
+ mov r0, #0x3
+ b _020D53B4
+_020D53B0:
+ mov r0, #0x0
+_020D53B4:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldreq r0, _020D53D8 ; =0x0000FFFF
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl PM_SendUtilityCommandAsync
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D53D8: .word 0x0000FFFF
+
+ arm_func_start FUN_020D53DC
+FUN_020D53DC: ; 0x020D53DC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020D5414 ; =PMi_DummyCallback
+ add r3, sp, #0x0
+ bl PMi_WriteRegisterAsync
+_020D53F0: ; 0x020D53F0
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+_020D5404: ; 0x020D5404
+ ldr r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5414: .word PMi_DummyCallback
+
+ arm_func_start PMi_WriteRegisterAsync
+PMi_WriteRegisterAsync:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r4, r1
+ mov r6, r2
+ mov r5, r3
+ bl PMi_Lock
+_020D5434: ; 0x020D5434
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldr r0, _020D5488 ; =0x02006400
+ ldr r1, _020D548C ; =0x021D54E4
+ and r2, r7, #0xff
+ orr r0, r2, r0
+ str r6, [r1, #0x4]
+ str r5, [r1, #0x8]
+ bl PMi_SendPxiData
+ ldr r0, _020D5490 ; =0x0000FFFF
+ ldr r1, _020D5494 ; =0x01010000
+ and r0, r4, r0
+ orr r0, r0, r1
+ bl PMi_SendPxiData
+_020D5478: ; 0x020D5478
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D5488: .word 0x02006400
+_020D548C: .word 0x021D54E4
+_020D5490: .word 0x0000FFFF
+_020D5494: .word 0x01010000
+
+ arm_func_start PMi_ReadRegister
+PMi_ReadRegister:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020D54D0 ; =PMi_DummyCallback
+ add r3, sp, #0x0
+ bl PMi_ReadRegisterAsync
+_020D54AC: ; 0x020D54AC
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ bl PMi_WaitBusy
+_020D54C0: ; 0x020D54C0
+ ldr r0, [sp, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D54D0: .word PMi_DummyCallback
+
+ arm_func_start PMi_ReadRegisterAsync
+PMi_ReadRegisterAsync:
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl PMi_Lock
+_020D54EC: ; 0x020D54EC
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr ip, _020D553C ; =0x021D550C
+ ldr r1, _020D5540 ; =0x021D54E4
+ ldr r0, _020D5544 ; =0x03006500
+ and r2, r7, #0xff
+ mov lr, r7, lsl #0x3
+ mov r8, #0x0
+ ldr r3, _020D5548 ; =0x021D5510
+ strh r8, [r12, lr]
+ orr r0, r2, r0
+ str r5, [r1, #0x4]
+ str r4, [r1, #0x8]
+ str r6, [r3, r7, lsl #0x3]
+ bl PMi_SendPxiData
+ mov r0, r8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D553C: .word 0x021D550C
+_020D5540: .word 0x021D54E4
+_020D5544: .word 0x03006500
+_020D5548: .word 0x021D5510
+
+ arm_func_start PM_SendUtilityCommandAsync
+PM_SendUtilityCommandAsync: ; 0x020D554C
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ mov r6, r1
+ mov r5, r2
+ bl PMi_Lock
+_020D5560: ; 0x020D5560
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mov r2, r4, lsr #0x10
+ ldr r1, _020D55B0 ; =0x021D54E4
+ ldr r0, _020D55B4 ; =0x02006300
+ and r2, r2, #0xff
+ orr r0, r2, r0
+ str r6, [r1, #0x4]
+ str r5, [r1, #0x8]
+ bl PMi_SendPxiData
+ ldr r0, _020D55B8 ; =0x0000FFFF
+ ldr r1, _020D55BC ; =0x01010000
+ and r0, r4, r0
+ orr r0, r0, r1
+ bl PMi_SendPxiData
+_020D55A4: ; 0x020D55A4
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D55B0: .word 0x021D54E4
+_020D55B4: .word 0x02006300
+_020D55B8: .word 0x0000FFFF
+_020D55BC: .word 0x01010000
+
+ arm_func_start PMi_SendSleepStart
+PMi_SendSleepStart: ; 0x020D55C0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ bl PMi_Lock
+_020D55D4: ; 0x020D55D4
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r1, _020D5660 ; =0x021D54D0
+ mov r2, #0x0
+ ldr r0, _020D5664 ; =0x03006000
+ str r2, [r1, #0x0]
+ bl PMi_SendPxiData
+ ldr r1, _020D5660 ; =0x021D54D0
+_020D5600:
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ beq _020D5600
+ mov r0, #0x0
+ ldr ip, _020D5668 ; =0x021D54D4
+ str r0, [r1, #0x0]
+ mov r2, r0
+ mov r3, r0
+ mov r1, #0x2
+ str r0, [r12, #0x0]
+ bl PMi_SetLCDPower
+ ldr r0, _020D566C ; =0x02006100
+ and r1, r5, #0xff
+ orr r0, r1, r0
+ bl PMi_SendPxiData
+ ldr r0, _020D5670 ; =0x0000FFFF
+ ldr r1, _020D5674 ; =0x01010000
+ and r0, r4, r0
+ orr r0, r0, r1
+ bl PMi_SendPxiData
+_020D5650: ; 0x020D5650
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D5660: .word 0x021D54D0
+_020D5664: .word 0x03006000
+_020D5668: .word 0x021D54D4
+_020D566C: .word 0x02006100
+_020D5670: .word 0x0000FFFF
+_020D5674: .word 0x01010000
+
+ arm_func_start PMi_CommonCallback
+PMi_CommonCallback: ; 0x020D5678
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ beq _020D569C
+ mov r0, #0x2
+ bl PMi_CallCallbackAndUnlock
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020D569C:
+ and r0, r1, #0x7f00
+ mov r0, r0, lsl #0x8
+ and r1, r1, #0xff
+ mov r2, r0, lsr #0x10
+ mov r0, r1, lsl #0x10
+ cmp r2, #0x70
+ mov r0, r0, lsr #0x10
+ blo _020D56FC
+ cmp r2, #0x74
+ bhi _020D56FC
+ ldr r1, _020D5750 ; =0x021D5510
+ sub r2, r2, #0x70
+ and r0, r0, #0xff
+ ldr r1, [r1, r2, lsl #0x3]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r1, #0x0
+ strneh r0, [r1, #0x0]
+ mov r1, r2, lsl #0x3
+ ldr r0, _020D5754 ; =0x021D550C
+ mov r2, #0x1
+ strh r2, [r0, r1]
+ mov r0, #0x0
+ b _020D5740
+_020D56FC:
+ cmp r2, #0x60
+ ldreq r1, _020D5758 ; =0x021D54D0
+ moveq r2, #0x1
+ streq r2, [r1, #0x0]
+ beq _020D5740
+ cmp r2, #0x62
+ ldreq r1, _020D575C ; =0x021D54D4
+ moveq r2, #0x1
+ streq r2, [r1, #0x0]
+ beq _020D5740
+ cmp r2, #0x67
+ bne _020D5740
+ ldr r1, _020D5760 ; =0x021D54E4
+ ldr r1, [r1, #0xc]
+ cmp r1, #0x0
+ strne r0, [r1, #0x0]
+ mov r0, #0x0
+_020D5740:
+ bl PMi_CallCallbackAndUnlock
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5750: .word 0x021D5510
+_020D5754: .word 0x021D550C
+_020D5758: .word 0x021D54D0
+_020D575C: .word 0x021D54D4
+_020D5760: .word 0x021D54E4
+
+ arm_func_start PM_Init
+PM_Init: ; 0x020D5764
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D580C ; =0x021D54CC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, _020D5810 ; =0x021D54E4
+ mov r2, #0x0
+ mov r3, #0x1
+ strh r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ bl PXI_Init
+ mov r5, #0x8
+ mov r4, #0x1
+_020D57A8:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D57B4: ; 0x020D57B4
+ cmp r0, #0x0
+ beq _020D57A8
+ ldr r1, _020D5814 ; =PMi_CommonCallback
+ mov r0, #0x8
+ bl PXI_SetFifoRecvCallback
+ mov r3, #0x0
+ ldr r0, _020D5818 ; =0x021D550C
+ mov r2, r3
+_020D57D4:
+ mov r1, r3, lsl #0x3
+ add r3, r3, #0x1
+ strh r2, [r0, r1]
+ cmp r3, #0x5
+ blt _020D57D4
+ ldr r0, _020D581C ; =0x021D54F4
+ bl OS_InitMutex
+ ldr r1, _020D5820 ; =0x027FFC3C
+ ldr r0, _020D5824 ; =0x021D54DC
+ ldr r1, [r1, #0x0]
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D580C: .word 0x021D54CC
+_020D5810: .word 0x021D54E4
+_020D5814: .word PMi_CommonCallback
+_020D5818: .word 0x021D550C
+_020D581C: .word 0x021D54F4
+_020D5820: .word 0x027FFC3C
+_020D5824: .word 0x021D54DC
+
+ arm_func_start PMi_CallCallbackAndUnlock
+PMi_CallCallbackAndUnlock: ; 0x020D5828
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020D5878 ; =0x021D54E4
+ ldr r1, [r2, #0x0]
+ ldr r12, [r2, #0x4]
+ cmp r1, #0x0
+ movne r3, #0x0
+ strne r3, [r2, #0x0]
+ cmp r12, #0x0
+ addeq sp, sp, #0x4
+ ldr r1, [r2, #0x8]
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r2, _020D5878 ; =0x021D54E4
+ mov r3, #0x0
+ str r3, [r2, #0x4]
+ blx r12
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5878: .word 0x021D54E4
+
+ arm_func_start PMi_DummyCallback
+PMi_DummyCallback: ; 0x020D587C
+ str r0, [r1, #0x0]
+ bx lr
+
+ arm_func_start PMi_WaitBusy
+PMi_WaitBusy:
+ stmdb sp!, {r4,lr}
+ ldr r4, _020D58C0 ; =0x021D54E4
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020D589C:
+ bl OS_GetCpsrIrq
+ cmp r0, #0x80
+ bne _020D58AC
+ bl PXIi_HandlerRecvFifoNotEmpty
+_020D58AC:
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020D589C
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D58C0: .word 0x021D54E4
+
+ arm_func_start PMi_Lock
+PMi_Lock:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r1, _020D5910 ; =0x021D54E4
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D58F4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {lr}
+ bx lr
+_020D58F4:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D5910: .word 0x021D54E4
diff --git a/asm/RTC_arm9.s b/asm/RTC_arm9.s
new file mode 100644
index 00000000..e6f5b4ee
--- /dev/null
+++ b/asm/RTC_arm9.s
@@ -0,0 +1,1028 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start RtcWaitBusy
+RtcWaitBusy: ; 0x020D5914
+ ldr ip, _020D5928 ; =0x021D5538
+_020D5918:
+ ldr r0, [r12, #0x0]
+ cmp r0, #0x1
+ beq _020D5918
+ bx lr
+ .balign 4
+_020D5928: .word 0x021D5538
+
+ arm_func_start RtcGetResultCallback
+RtcGetResultCallback: ; 0x020D592C
+ ldr r1, _020D5938 ; =0x021D5538
+ str r0, [r1, #0x20]
+ bx lr
+ .balign 4
+_020D5938: .word 0x021D5538
+
+ arm_func_start RtcBCD2HEX
+RtcBCD2HEX: ; 0x020D593C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, #0x0
+ mov r3, r5
+ mov r2, r5
+_020D5950:
+ mov r1, r0, lsr r2
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcs sp, sp, #0x4
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r5,lr}
+ bxcs lr
+ add r3, r3, #0x1
+ cmp r3, #0x8
+ add r2, r2, #0x4
+ blt _020D5950
+ mov r12, #0x0
+ mov lr, r12
+ mov r4, #0x1
+ mov r2, #0xa
+_020D598C:
+ mov r1, r0, lsr lr
+ and r3, r1, #0xf
+ mul r1, r4, r2
+ mla r5, r4, r3, r5
+ add r12, r12, #0x1
+ mov r4, r1
+ cmp r12, #0x8
+ add lr, lr, #0x4
+ blt _020D598C
+ mov r0, r5
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start RtcCommonCallback
+RtcCommonCallback: ; 0x020D59C0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ beq _020D5A30
+ ldr r0, _020D5F30 ; =0x021D5538
+ ldr r2, _020D5F30 ; =0x021D5538
+ ldr r1, [r0, #0x18]
+ ldr r4, [r2, #0x4]
+ cmp r1, #0x0
+ movne r1, #0x0
+ strne r1, [r0, #0x18]
+ ldr r0, _020D5F30 ; =0x021D5538
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ movne r1, #0x0
+ strne r1, [r0, #0x0]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r1, [r2, #0x10]
+ mov r3, #0x0
+ mov r0, #0x6
+ str r3, [r2, #0x4]
+ blx r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D5A30:
+ and r0, r1, #0x7f00
+ mov r0, r0, lsr #0x8
+ and r0, r0, #0xff
+ cmp r0, #0x30
+ and r2, r1, #0xff
+ bne _020D5A70
+ ldr r0, _020D5F30 ; =0x021D5538
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ blx r0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D5A70:
+ cmp r2, #0x0
+ bne _020D5E88
+ ldr r0, _020D5F30 ; =0x021D5538
+ mov r5, #0x0
+ ldr r1, [r0, #0x14]
+ cmp r1, #0xf
+ addls pc, pc, r1, lsl #0x2
+ b _020D5E74
+_020D5A90:
+ b _020D5AD0
+_020D5A94:
+ b _020D5B24
+_020D5A98:
+ b _020D5B74
+_020D5A9C:
+ b _020D5ED0
+_020D5AA0:
+ b _020D5ED0
+_020D5AA4:
+ b _020D5ED0
+_020D5AA8:
+ b _020D5C1C
+_020D5AAC:
+ b _020D5C4C
+_020D5AB0:
+ b _020D5C70
+_020D5AB4:
+ b _020D5D14
+_020D5AB8:
+ b _020D5DC8
+_020D5ABC:
+ b _020D5ED0
+_020D5AC0:
+ b _020D5ED0
+_020D5AC4:
+ b _020D5ED0
+_020D5AC8:
+ b _020D5ED0
+_020D5ACC:
+ b _020D5ED0
+_020D5AD0:
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ ldr r4, [r0, #0x8]
+ ldrb r0, [r1, #0x0]
+ bl RtcBCD2HEX
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ str r0, [r4, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x13
+ mov r0, r0, lsr #0x1b
+ bl RtcBCD2HEX
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ str r0, [r4, #0x4]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0xa
+ mov r0, r0, lsr #0x1a
+ bl RtcBCD2HEX
+ str r0, [r4, #0x8]
+ mov r0, r4
+ bl RTC_GetDayOfWeek
+ str r0, [r4, #0xc]
+ b _020D5ED0
+_020D5B24:
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ ldr r4, [r0, #0x8]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x1a
+ mov r0, r0, lsr #0x1a
+ bl RtcBCD2HEX
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x11
+ mov r0, r0, lsr #0x19
+ bl RtcBCD2HEX
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0x4]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x9
+ mov r0, r0, lsr #0x19
+ bl RtcBCD2HEX
+ str r0, [r4, #0x8]
+ b _020D5ED0
+_020D5B74:
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ ldr r4, [r0, #0x8]
+ ldr r0, [r1, #0x0]
+ and r0, r0, #0xff
+ bl RtcBCD2HEX
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ str r0, [r4, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x13
+ mov r0, r0, lsr #0x1b
+ bl RtcBCD2HEX
+ ldr r1, _020D5F34 ; =0x027FFDE8
+ str r0, [r4, #0x4]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0xa
+ mov r0, r0, lsr #0x1a
+ bl RtcBCD2HEX
+ str r0, [r4, #0x8]
+ mov r0, r4
+ bl RTC_GetDayOfWeek
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0xc]
+ ldr r0, [r1, #0x0]
+ ldr r1, _020D5F30 ; =0x021D5538
+ mov r0, r0, lsl #0x1a
+ mov r0, r0, lsr #0x1a
+ ldr r4, [r1, #0xc]
+ bl RtcBCD2HEX
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x11
+ mov r0, r0, lsr #0x19
+ bl RtcBCD2HEX
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0x4]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x9
+ mov r0, r0, lsr #0x19
+ bl RtcBCD2HEX
+ str r0, [r4, #0x8]
+ b _020D5ED0
+_020D5C1C:
+ ldr r1, _020D5F3C ; =0x027FFDEA
+ ldr r2, [r0, #0x8]
+ ldrh r0, [r1, #0x0]
+ mov r0, r0, lsl #0x1c
+ mov r0, r0, lsr #0x1c
+ cmp r0, #0x4
+ bne _020D5C44
+ mov r0, #0x1
+ str r0, [r2, #0x0]
+ b _020D5ED0
+_020D5C44:
+ str r5, [r2, #0x0]
+ b _020D5ED0
+_020D5C4C:
+ ldr r1, _020D5F3C ; =0x027FFDEA
+ ldr r2, [r0, #0x8]
+ ldrh r0, [r1, #0x0]
+ mov r0, r0, lsl #0x19
+ movs r0, r0, lsr #0x1f
+ movne r0, #0x1
+ strne r0, [r2, #0x0]
+ streq r5, [r2, #0x0]
+ b _020D5ED0
+_020D5C70:
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ ldr r4, [r0, #0x8]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ str r0, [r4, #0x0]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x12
+ mov r0, r0, lsr #0x1a
+ bl RtcBCD2HEX
+ ldr r1, _020D5F38 ; =0x027FFDEC
+ str r0, [r4, #0x4]
+ ldr r0, [r1, #0x0]
+ mov r0, r0, lsl #0x9
+ mov r0, r0, lsr #0x19
+ bl RtcBCD2HEX
+ str r0, [r4, #0x8]
+ mov r1, r5
+ ldr r0, _020D5F38 ; =0x027FFDEC
+ str r1, [r4, #0xc]
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x18
+ movs r0, r0, lsr #0x1f
+ ldrne r0, [r4, #0xc]
+ addne r0, r0, #0x1
+ strne r0, [r4, #0xc]
+ ldr r0, _020D5F38 ; =0x027FFDEC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ movs r0, r0, lsr #0x1f
+ ldrne r0, [r4, #0xc]
+ addne r0, r0, #0x2
+ strne r0, [r4, #0xc]
+ ldr r0, _020D5F38 ; =0x027FFDEC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x8
+ movs r0, r0, lsr #0x1f
+ ldrne r0, [r4, #0xc]
+ addne r0, r0, #0x4
+ strne r0, [r4, #0xc]
+ b _020D5ED0
+_020D5D14:
+ ldr r3, [r0, #0x18]
+ cmp r3, #0x0
+ bne _020D5DC0
+ ldr r1, [r0, #0x8]
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _020D5D7C
+ ldr r2, _020D5F3C ; =0x027FFDEA
+ ldrh r1, [r2, #0x0]
+ mov r1, r1, lsl #0x1c
+ mov r1, r1, lsr #0x1c
+ cmp r1, #0x4
+ beq _020D5ED0
+ add r1, r3, #0x1
+ str r1, [r0, #0x18]
+ ldrh r0, [r2, #0x0]
+ bic r0, r0, #0xf
+ orr r0, r0, #0x4
+ strh r0, [r2, #0x0]
+ bl RTCi_WriteRawStatus2Async
+_020D5D64: ; 0x020D5D64
+ cmp r0, #0x0
+ moveq r1, r5
+ ldreq r0, _020D5F30 ; =0x021D5538
+ moveq r5, #0x3
+ streq r1, [r0, #0x18]
+ b _020D5ED0
+_020D5D7C:
+ ldr r2, _020D5F3C ; =0x027FFDEA
+ ldrh r1, [r2, #0x0]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1c
+ beq _020D5ED0
+ add r1, r3, #0x1
+ str r1, [r0, #0x18]
+ ldrh r0, [r2, #0x0]
+ bic r0, r0, #0xf
+ strh r0, [r2, #0x0]
+ bl RTCi_WriteRawStatus2Async
+_020D5DA8: ; 0x020D5DA8
+ cmp r0, #0x0
+ moveq r1, r5
+ ldreq r0, _020D5F30 ; =0x021D5538
+ moveq r5, #0x3
+ streq r1, [r0, #0x18]
+ b _020D5ED0
+_020D5DC0:
+ str r5, [r0, #0x18]
+ b _020D5ED0
+_020D5DC8:
+ ldr r3, [r0, #0x18]
+ cmp r3, #0x0
+ bne _020D5E6C
+ ldr r1, [r0, #0x8]
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x1
+ bne _020D5E28
+ ldr r2, _020D5F3C ; =0x027FFDEA
+ ldrh r1, [r2, #0x0]
+ mov r1, r1, lsl #0x19
+ movs r1, r1, lsr #0x1f
+ bne _020D5ED0
+ add r1, r3, #0x1
+ str r1, [r0, #0x18]
+ ldrh r0, [r2, #0x0]
+ orr r0, r0, #0x40
+ strh r0, [r2, #0x0]
+ bl RTCi_WriteRawStatus2Async
+_020D5E10: ; 0x020D5E10
+ cmp r0, #0x0
+ moveq r1, r5
+ ldreq r0, _020D5F30 ; =0x021D5538
+ moveq r5, #0x3
+ streq r1, [r0, #0x18]
+ b _020D5ED0
+_020D5E28:
+ ldr r2, _020D5F3C ; =0x027FFDEA
+ ldrh r1, [r2, #0x0]
+ mov r1, r1, lsl #0x19
+ movs r1, r1, lsr #0x1f
+ beq _020D5ED0
+ add r1, r3, #0x1
+ str r1, [r0, #0x18]
+ ldrh r0, [r2, #0x0]
+ bic r0, r0, #0x40
+ strh r0, [r2, #0x0]
+ bl RTCi_WriteRawStatus2Async
+_020D5E54: ; 0x020D5E54
+ cmp r0, #0x0
+ moveq r1, r5
+ ldreq r0, _020D5F30 ; =0x021D5538
+ moveq r5, #0x3
+ streq r1, [r0, #0x18]
+ b _020D5ED0
+_020D5E6C:
+ str r5, [r0, #0x18]
+ b _020D5ED0
+_020D5E74:
+ ldr r0, _020D5F30 ; =0x021D5538
+ mov r1, #0x0
+ str r1, [r0, #0x18]
+ mov r5, #0x4
+ b _020D5ED0
+_020D5E88:
+ ldr r0, _020D5F30 ; =0x021D5538
+ mov r1, #0x0
+ str r1, [r0, #0x18]
+ cmp r2, #0x4
+ addls pc, pc, r2, lsl #0x2
+ b _020D5ECC
+_020D5EA0:
+ b _020D5ECC
+_020D5EA4:
+ b _020D5EB4
+_020D5EA8:
+ b _020D5EBC
+_020D5EAC:
+ b _020D5EC4
+_020D5EB0:
+ b _020D5ECC
+_020D5EB4:
+ mov r5, #0x4
+ b _020D5ED0
+_020D5EBC:
+ mov r5, #0x5
+ b _020D5ED0
+_020D5EC4:
+ mov r5, #0x1
+ b _020D5ED0
+_020D5ECC:
+ mov r5, #0x6
+_020D5ED0:
+ ldr r0, _020D5F30 ; =0x021D5538
+ ldr r1, [r0, #0x18]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r2, _020D5F30 ; =0x021D5538
+ ldr r1, [r0, #0x0]
+ ldr r4, [r2, #0x4]
+ cmp r1, #0x0
+ movne r1, #0x0
+ strne r1, [r0, #0x0]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r1, [r2, #0x10]
+ mov r3, #0x0
+ mov r0, r5
+ str r3, [r2, #0x4]
+ blx r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D5F30: .word 0x021D5538
+_020D5F34: .word 0x027FFDE8
+_020D5F38: .word 0x027FFDEC
+_020D5F3C: .word 0x027FFDEA
+
+ arm_func_start RTC_GetDateTimeAsync
+RTC_GetDateTimeAsync: ; 0x020D5F40
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl OS_DisableInterrupts
+ ldr r1, _020D5FCC ; =0x021D5538
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D5F80
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D5F80:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D5FCC ; =0x021D5538
+ mov r2, #0x2
+ mov r1, #0x0
+ str r2, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r7, [r0, #0x8]
+ str r6, [r0, #0xc]
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x10]
+ bl RTCi_ReadRawDateTimeAsync
+_020D5FB4: ; 0x020D5FB4
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D5FCC: .word 0x021D5538
+
+ arm_func_start RTC_GetTime
+RTC_GetTime: ; 0x020D5FD0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D600C ; =RtcGetResultCallback
+ mov r2, #0x0
+ bl RTC_GetTimeAsync
+ ldr r1, _020D6010 ; =0x021D5538
+ cmp r0, #0x0
+ str r0, [r1, #0x20]
+ bne _020D5FF8
+ bl RtcWaitBusy
+_020D5FF8:
+ ldr r0, _020D6010 ; =0x021D5538
+ ldr r0, [r0, #0x20]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D600C: .word RtcGetResultCallback
+_020D6010: .word 0x021D5538
+
+ arm_func_start RTC_GetTimeAsync
+RTC_GetTimeAsync: ; 0x020D6014
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020D608C ; =0x021D5538
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D6048
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D6048:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D608C ; =0x021D5538
+ mov r2, #0x1
+ mov r1, #0x0
+ str r2, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r6, [r0, #0x8]
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x10]
+ bl RTCi_ReadRawTimeAsync
+_020D6078: ; 0x020D6078
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D608C: .word 0x021D5538
+
+ arm_func_start RTC_GetDate
+RTC_GetDate: ; 0x020D6090
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D60CC ; =RtcGetResultCallback
+ mov r2, #0x0
+ bl RTC_GetDateAsync
+ ldr r1, _020D60D0 ; =0x021D5538
+ cmp r0, #0x0
+ str r0, [r1, #0x20]
+ bne _020D60B8
+ bl RtcWaitBusy
+_020D60B8:
+ ldr r0, _020D60D0 ; =0x021D5538
+ ldr r0, [r0, #0x20]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D60CC: .word RtcGetResultCallback
+_020D60D0: .word 0x021D5538
+
+ arm_func_start RTC_GetDateAsync
+RTC_GetDateAsync: ; 0x020D60D4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020D6148 ; =0x021D5538
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D6108
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D6108:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D6148 ; =0x021D5538
+ mov r1, #0x0
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r6, [r0, #0x8]
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x10]
+ bl RTCi_ReadRawDateAsync
+_020D6134: ; 0x020D6134
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D6148: .word 0x021D5538
+
+ arm_func_start RTC_Init
+RTC_Init: ; 0x020D614C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D61C8 ; =0x021D5534
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, _020D61CC ; =0x021D5538
+ mov r2, #0x0
+ mov r3, #0x1
+ strh r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ str r2, [r0, #0x1c]
+ str r2, [r0, #0x8]
+ str r2, [r0, #0xc]
+ bl PXI_Init
+ mov r5, #0x5
+ mov r4, #0x1
+_020D619C:
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D61A8: ; 0x020D61A8
+ cmp r0, #0x0
+ beq _020D619C
+ ldr r1, _020D61D0 ; =RtcCommonCallback
+ mov r0, #0x5
+ bl PXI_SetFifoRecvCallback
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D61C8: .word 0x021D5534
+_020D61CC: .word 0x021D5538
+_020D61D0: .word RtcCommonCallback
+
+ arm_func_start FUN_020D61D4
+FUN_020D61D4: ; 0x020D61D4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, r0, lsl #0x8
+ and r1, r0, #0x7f00
+ mov r0, #0x5
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D61F0: ; 0x020D61F0
+ cmp r0, #0x0
+ movge r0, #0x1
+ movlt r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start RTCi_WriteRawStatus2Async
+RTCi_WriteRawStatus2Async:
+ ldr ip, _020D6214 ; =FUN_020D61D4
+ mov r0, #0x27
+ bx r12
+ .balign 4
+_020D6214: .word FUN_020D61D4
+
+ arm_func_start RTCi_ReadRawTimeAsync
+RTCi_ReadRawTimeAsync:
+ ldr ip, _020D6224 ; =FUN_020D61D4
+ mov r0, #0x12
+ bx r12
+ .balign 4
+_020D6224: .word FUN_020D61D4
+
+ arm_func_start RTCi_ReadRawDateAsync
+RTCi_ReadRawDateAsync:
+ ldr ip, _020D6234 ; =FUN_020D61D4
+ mov r0, #0x11
+ bx r12
+ .balign 4
+_020D6234: .word FUN_020D61D4
+
+ arm_func_start RTCi_ReadRawDateTimeAsync
+RTCi_ReadRawDateTimeAsync:
+ ldr ip, _020D6244 ; =FUN_020D61D4
+ mov r0, #0x10
+ bx r12
+ .balign 4
+_020D6244: .word FUN_020D61D4
+
+ arm_func_start RTC_GetDayOfWeek
+RTC_GetDayOfWeek: ; 0x020D6248
+ stmdb sp!, {r4-r6,lr}
+ ldr r1, [r0, #0x4]
+ ldr r2, [r0, #0x0]
+ sub r3, r1, #0x2
+ cmp r3, #0x1
+ add lr, r2, #0x7d0
+ ldr r4, _020D630C ; =0x51EB851F
+ sublt lr, lr, #0x1
+ ldr r12, [r0, #0x8]
+ smull r0, r2, r4, lr
+ addlt r3, r3, #0xc
+ mov r1, #0x1a
+ mul r0, r3, r1
+ smull r1, r3, r4, lr
+ ldr r5, _020D6310 ; =0x66666667
+ sub r0, r0, #0x2
+ smull r4, r1, r5, r0
+ mov r4, lr, lsr #0x1f
+ mov r2, r2, asr #0x5
+ mov r3, r3, asr #0x5
+ add r3, r4, r3
+ ldr r5, _020D6314 ; =0x00000064
+ add r2, r4, r2
+ smull r2, r4, r5, r2
+ sub r2, lr, r2
+ mov r1, r1, asr #0x2
+ mov r0, r0, lsr #0x1f
+ add r1, r0, r1
+ mov r4, r2, asr #0x1
+ add r0, r12, r1
+ add r1, r2, r4, lsr #0x1e
+ add r2, r2, r0
+ mov r6, r3, asr #0x1
+ add r0, r3, r6, lsr #0x1e
+ add r1, r2, r1, asr #0x2
+ add r1, r1, r0, asr #0x2
+ mov r0, #0x5
+ mla r4, r3, r0, r1
+ ldr r3, _020D6318 ; =0x92492493
+ mov r1, r4, lsr #0x1f
+ smull r2, r0, r3, r4
+ add r0, r4, r0
+ mov r0, r0, asr #0x2
+ ldr r2, _020D631C ; =0x00000007
+ add r0, r1, r0
+ smull r0, r1, r2, r0
+ sub r0, r4, r0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D630C: .word 0x51EB851F
+_020D6310: .word 0x66666667
+_020D6314: .word 0x00000064
+_020D6318: .word 0x92492493
+_020D631C: .word 0x00000007
+
+ arm_func_start RTC_ConvertSecondToDateTime
+RTC_ConvertSecondToDateTime: ; 0x020D6320
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r2
+ mov r12, #0x0
+ mov r4, r3
+ subs r2, r5, r12
+ sbcs r2, r4, r12
+ mov r7, r0
+ mov r6, r1
+ movlt r5, r12
+ movlt r4, r12
+ blt _020D6364
+ ldr r1, _020D63B0 ; =0xBC19137F
+ subs r0, r1, r5
+ sbcs r0, r12, r4
+ movlt r5, r1
+ movlt r4, r12
+_020D6364:
+ ldr r2, _020D63B4 ; =0x00015180
+ mov r0, r5
+ mov r1, r4
+ mov r3, #0x0
+ bl _ll_mod
+ mov r1, r0
+ mov r0, r6
+ bl RTCi_ConvertSecondToTime
+ ldr r2, _020D63B4 ; =0x00015180
+ mov r0, r5
+ mov r1, r4
+ mov r3, #0x0
+ bl FUN_020EBA38
+ mov r1, r0
+ mov r0, r7
+ bl RTC_ConvertDayToDate
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D63B0: .word 0xBC19137F
+_020D63B4: .word 0x00015180
+
+ arm_func_start RTCi_ConvertSecondToTime
+RTCi_ConvertSecondToTime: ; 0x020D63B8
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020D6448 ; =0x0001517F
+ cmp r1, #0x0
+ movlt r1, #0x0
+ cmp r1, r2
+ ldr ip, _020D644C ; =0x88888889
+ movgt r1, r2
+ smull r2, r3, r12, r1
+ smull r2, lr, r12, r1
+ ldr r5, _020D6450 ; =0x91A2B3C5
+ add r3, r1, r3
+ smull r4, r2, r5, r1
+ mov r5, r1, lsr #0x1f
+ mov r3, r3, asr #0x5
+ add r3, r5, r3
+ smull r4, r6, r12, r3
+ add lr, r1, lr
+ mov lr, lr, asr #0x5
+ add r6, r3, r6
+ add r2, r1, r2
+ ldr r4, _020D6454 ; =0x0000003C
+ add lr, r5, lr
+ smull r12, lr, r4, lr
+ sub lr, r1, r12
+ mov r2, r2, asr #0xb
+ mov r6, r6, asr #0x5
+ mov r1, r3, lsr #0x1f
+ add r6, r1, r6
+ smull r1, r12, r4, r6
+ str lr, [r0, #0x8]
+ sub r6, r3, r1
+ str r6, [r0, #0x4]
+ add r2, r5, r2
+ str r2, [r0, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D6448: .word 0x0001517F
+_020D644C: .word 0x88888889
+_020D6450: .word 0x91A2B3C5
+_020D6454: .word 0x0000003C
+
+ arm_func_start RTC_ConvertDayToDate
+RTC_ConvertDayToDate: ; 0x020D6458
+ stmdb sp!, {r4,lr}
+ ldr r2, _020D6560 ; =0x00008EAC
+ cmp r1, #0x0
+ movlt r1, #0x0
+ cmp r1, r2
+ movgt r1, r2
+ ldr r3, _020D6564 ; =0x92492493
+ add lr, r1, #0x6
+ smull r2, r4, r3, lr
+ add r4, lr, r4
+ mov r4, r4, asr #0x2
+ mov r2, lr, lsr #0x1f
+ ldr ip, _020D6568 ; =0x00000007
+ add r4, r2, r4
+ smull r2, r3, r12, r4
+ sub r4, lr, r2
+ ldr r2, _020D656C ; =0x0000016D
+ ldr r3, _020D6570 ; =0x0000016E
+ str r4, [r0, #0xc]
+ mov lr, #0x0
+_020D64A8:
+ ands r12, lr, #0x3
+ moveq r12, r3
+ movne r12, r2
+ mov r4, r1
+ subs r1, r1, r12
+ movmi r1, r4
+ bmi _020D64D0
+ add lr, lr, #0x1
+ cmp lr, #0x63
+ blo _020D64A8
+_020D64D0:
+ ldr r2, _020D656C ; =0x0000016D
+ str lr, [r0, #0x0]
+ cmp r1, r2
+ movgt r1, r2
+ ands r2, lr, #0x3
+ bne _020D6518
+ cmp r1, #0x3c
+ bge _020D6514
+ cmp r1, #0x1f
+ movlt r2, #0x1
+ subge r1, r1, #0x1f
+ movge r2, #0x2
+ str r2, [r0, #0x4]
+ add r1, r1, #0x1
+ str r1, [r0, #0x8]
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D6514:
+ sub r1, r1, #0x1
+_020D6518:
+ ldr r3, _020D6574 ; =0x02106A20
+ mov r4, #0xb
+_020D6520:
+ ldr r2, [r3, r4, lsl #0x2]
+ mov r12, r4, lsl #0x2
+ cmp r1, r2
+ blt _020D6550
+ add r2, r4, #0x1
+ str r2, [r0, #0x4]
+ ldr r2, [r3, r12]
+ sub r1, r1, r2
+ add r1, r1, #0x1
+ str r1, [r0, #0x8]
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D6550:
+ subs r4, r4, #0x1
+ bpl _020D6520
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D6560: .word 0x00008EAC
+_020D6564: .word 0x92492493
+_020D6568: .word 0x00000007
+_020D656C: .word 0x0000016D
+_020D6570: .word 0x0000016E
+_020D6574: .word 0x02106A20
+
+ arm_func_start RTC_ConvertDateTimeToSecond
+RTC_ConvertDateTimeToSecond: ; 0x020D6578
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ bl RTC_ConvertDateToDay
+ mov r4, r0
+ mvn r0, #0x0
+ cmp r4, r0
+ addeq sp, sp, #0x4
+ moveq r1, r0
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ mov r0, r5
+ bl RTCi_ConvertTimeToSecond
+ mvn r2, #0x0
+ cmp r0, r2
+ moveq r1, r2
+ beq _020D65DC
+ ldr r1, _020D65EC ; =0x00015180
+ mov r2, #0x0
+ umull r12, r3, r4, r1
+ mla r3, r4, r2, r3
+ mov r2, r4, asr #0x1f
+ mla r3, r2, r1, r3
+ adds r2, r0, r12
+ adc r1, r3, r0, asr #0x1f
+_020D65DC:
+ mov r0, r2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D65EC: .word 0x00015180
+
+ arm_func_start RTCi_ConvertTimeToSecond
+RTCi_ConvertTimeToSecond: ; 0x020D65F0
+ ldr r3, [r0, #0x4]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x3c
+ mla r3, r2, r1, r3
+ ldr r0, [r0, #0x8]
+ mla r0, r3, r1, r0
+ bx lr
+
+ arm_func_start RTC_ConvertDateToDay
+RTC_ConvertDateToDay: ; 0x020D660C
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x64
+ bhs _020D665C
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x1
+ blo _020D665C
+ cmp r2, #0xc
+ bhi _020D665C
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x1
+ blo _020D665C
+ cmp r1, #0x1f
+ bhi _020D665C
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x7
+ bge _020D665C
+ cmp r2, #0x1
+ blo _020D665C
+ cmp r2, #0xc
+ bls _020D6664
+_020D665C:
+ mvn r0, #0x0
+ bx lr
+_020D6664:
+ ldr r0, _020D6698 ; =0x02106A1C
+ sub r1, r1, #0x1
+ ldr r0, [r0, r2, lsl #0x2]
+ cmp r2, #0x3
+ add r2, r1, r0
+ blo _020D6684
+ ands r0, r3, #0x3
+ addeq r2, r2, #0x1
+_020D6684:
+ ldr r0, _020D669C ; =0x0000016D
+ add r1, r3, #0x3
+ mla r0, r3, r0, r2
+ add r0, r0, r1, lsr #0x2
+ bx lr
+ .balign 4
+_020D6698: .word 0x02106A1C
+_020D669C: .word 0x0000016D
diff --git a/asm/STD_arm9.s b/asm/STD_arm9.s
new file mode 100644
index 00000000..e25cc0c5
--- /dev/null
+++ b/asm/STD_arm9.s
@@ -0,0 +1,17117 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start STD_CompareNString
+STD_CompareNString: ; 0x020DE03C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ beq _020DE080
+ cmp r2, #0x0
+ mov lr, #0x0
+ ble _020DE080
+_020DE058:
+ ldrb r12, [r0, lr]
+ ldrb r3, [r1, lr]
+ cmp r12, r3
+ addne sp, sp, #0x4
+ subne r0, r12, r3
+ ldmneia sp!, {lr}
+ bxne lr
+ add lr, lr, #0x1
+ cmp lr, r2
+ blt _020DE058
+_020DE080:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start STD_CompareString
+STD_CompareString: ; 0x020DE090
+ b _020DE09C
+_020DE094:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+_020DE09C:
+ ldrsb r2, [r1, #0x0]
+ ldrsb r3, [r0, #0x0]
+ cmp r3, r2
+ bne _020DE0B4
+ cmp r3, #0x0
+ bne _020DE094
+_020DE0B4:
+ sub r0, r3, r2
+ bx lr
+
+ arm_func_start STD_GetStringLength
+STD_GetStringLength: ; 0x020DE0BC
+ ldrsb r1, [r0, #0x0]
+ mov r2, #0x0
+ cmp r1, #0x0
+ beq _020DE0DC
+_020DE0CC:
+ add r2, r2, #0x1
+ ldrsb r1, [r0, r2]
+ cmp r1, #0x0
+ bne _020DE0CC
+_020DE0DC:
+ mov r0, r2
+ bx lr
+
+ arm_func_start STD_CopyLString
+STD_CopyLString: ; 0x020DE0E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ sub r12, r2, #0x1
+ cmp r12, #0x0
+ mov lr, #0x0
+ ble _020DE120
+_020DE0FC:
+ ldrsb r3, [r1, #0x0]
+ strb r3, [r0, lr]
+ ldrsb r3, [r1, #0x0]
+ cmp r3, #0x0
+ beq _020DE120
+ add lr, lr, #0x1
+ cmp lr, r12
+ add r1, r1, #0x1
+ blt _020DE0FC
+_020DE120:
+ sub r3, r2, #0x1
+ cmp lr, r3
+ blt _020DE138
+ cmp r2, #0x0
+ movne r2, #0x0
+ strneb r2, [r0, lr]
+_020DE138:
+ mov r0, r1
+ bl STD_GetStringLength
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start abort
+abort: ; 0x020DE14C
+ stmdb sp!, {r3,lr}
+ mov r0, #0x1
+ bl raise
+ ldr r1, _020DE16C ; =0x021D6F78
+ mov r0, #0x1
+ str r0, [r1, #0xc]
+ bl exit
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DE16C: .word 0x021D6F78
+
+ arm_func_start exit
+exit: ; 0x020DE170
+ stmdb sp!, {r4,lr}
+ ldr r1, _020DE1B8 ; =0x021D6F78
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x0
+ bne _020DE1AC
+ bl __destroy_global_chain
+ ldr r0, _020DE1B8 ; =0x021D6F78
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020DE1AC
+ blx r0
+ ldr r0, _020DE1B8 ; =0x021D6F78
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+_020DE1AC:
+ mov r0, r4
+ bl __exit
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020DE1B8: .word 0x021D6F78
+
+ arm_func_start __exit
+__exit: ; 0x020DE1BC
+ stmdb sp!, {r3-r5,lr}
+ ldr r0, _020DE2CC ; =0x021D70D0
+ bl OS_TryLockMutex
+_020DE1C8: ; 0x020DE1C8
+ cmp r0, #0x0
+ bne _020DE1F4
+ ldr r0, _020DE2D0 ; =0x021D3498
+ ldr r1, _020DE2D4 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ b _020DE24C
+_020DE1F4:
+ ldr r0, _020DE2D0 ; =0x021D3498
+ ldr r1, _020DE2D4 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE224
+ ldr r0, _020DE2D8 ; =0x021D70AC
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ b _020DE24C
+_020DE224:
+ ldr r0, _020DE2CC ; =0x021D70D0
+ bl OS_LockMutex
+ ldr r0, _020DE2D0 ; =0x021D3498
+ ldr r1, _020DE2D4 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+_020DE24C:
+ ldr r4, _020DE2DC ; =0x021D6F78
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ble _020DE280
+ ldr r5, _020DE2E0 ; =0x021D6F88
+_020DE260:
+ ldr r0, [r4, #0x8]
+ sub r1, r0, #0x1
+ ldr r0, [r5, r1, lsl #0x2]
+ str r1, [r4, #0x8]
+ blx r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bgt _020DE260
+_020DE280:
+ ldr r0, _020DE2D8 ; =0x021D70AC
+ ldr r1, [r0, #0x0]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bne _020DE29C
+ ldr r0, _020DE2CC ; =0x021D70D0
+ bl OS_UnlockMutex
+_020DE29C:
+ ldr r0, _020DE2DC ; =0x021D6F78
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020DE2BC
+ blx r0
+ ldr r0, _020DE2DC ; =0x021D6F78
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020DE2BC:
+ mov r0, #0x0
+ bl fflush
+ bl _ExitProcess
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020DE2CC: .word 0x021D70D0
+_020DE2D0: .word 0x021D3498
+_020DE2D4: .word 0x021D7088
+_020DE2D8: .word 0x021D70AC
+_020DE2DC: .word 0x021D6F78
+_020DE2E0: .word 0x021D6F88
+
+ arm_func_start nan
+nan: ; 0x020DE2E4
+ ldr r0, _020DE2F4 ; =0x02106B78
+ ldr ip, _020DE2F8 ; =_f2d
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_020DE2F4: .word 0x02106B78
+_020DE2F8: .word _f2d
+
+arm_func_start __flush_line_buffered_output_files
+__flush_line_buffered_output_files:
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE384 ; =0x02106A58
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE31C:
+ ldr r1, [r0, #0x4]
+ mov r2, r1, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ beq _020DE35C
+ mov r1, r1, lsl #0x19
+ mov r1, r1, lsr #0x1e
+ tst r1, #0x1
+ beq _020DE35C
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DE35C
+ bl fflush
+_020DE354: ; 0x020DE354
+ cmp r0, #0x0
+ movne r4, r9
+_020DE35C:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE374
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE374:
+ cmp r0, #0x0
+ bne _020DE31C
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE384: .word 0x02106A58
+
+ arm_func_start __flush_all
+__flush_all: ; 0x020DE388
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE3EC ; =0x02106A58
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE3A8:
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ beq _020DE3C4
+ bl fflush
+_020DE3BC: ; 0x020DE3BC
+ cmp r0, #0x0
+ movne r4, r9
+_020DE3C4:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE3DC
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE3DC:
+ cmp r0, #0x0
+ bne _020DE3A8
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE3EC: .word 0x02106A58
+
+ arm_func_start abs
+abs: ; 0x020DE3F0
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ bx lr
+
+ arm_func_start __msl_assertion_failed
+__msl_assertion_failed: ; 0x020DE3FC
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ ldr r0, _020DE434 ; =0x02106B3C
+ mov r1, r4
+ mov r2, lr
+ mov r3, r12
+ bl printf
+ bl abort
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ .balign 4
+_020DE434: .word 0x02106B3C
+
+arm_func_start __convert_from_newlines
+__convert_from_newlines:
+ bx lr
+
+arm_func_start __convert_to_newlines
+__convert_to_newlines:
+ bx lr
+
+arm_func_start __prep_buffer
+__prep_buffer:
+ ldr r1, [r0, #0x1c]
+ str r1, [r0, #0x24]
+ ldr r3, [r0, #0x20]
+ str r3, [r0, #0x28]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x2c]
+ and r1, r2, r1
+ sub r1, r3, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x34]
+ bx lr
+
+arm_func_start __load_buffer
+__load_buffer:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r2
+ mov r4, r0
+ mov r6, r1
+ bl __prep_buffer
+ cmp r5, #0x1
+ ldreq r0, [r4, #0x20]
+ add r2, r4, #0x28
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x1c]
+ ldr r3, [r4, #0x48]
+ ldr r12, [r4, #0x3c]
+ blx r12
+ cmp r0, #0x2
+ moveq r1, #0x0
+ streq r1, [r4, #0x28]
+ cmp r6, #0x0
+ ldrne r1, [r4, #0x28]
+ strne r1, [r6, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+_020DE4C8: ; 0x020DE4C8
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE4F4
+ ldr r0, [r4, #0x1c]
+ add r1, r4, #0x28
+ bl __convert_to_newlines
+_020DE4F4:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+arm_func_start __flush_buffer
+__flush_buffer:
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r2, [r5, #0x24]
+ ldr r0, [r5, #0x1c]
+ mov r4, r1
+ subs r0, r2, r0
+ beq _020DE574
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE538
+ ldr r0, [r5, #0x1c]
+ add r1, r5, #0x28
+ bl __convert_from_newlines
+_020DE538:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x1c]
+ ldr r3, [r5, #0x48]
+ ldr r12, [r5, #0x40]
+ add r2, r5, #0x28
+ blx r12
+ cmp r4, #0x0
+ ldrne r1, [r5, #0x28]
+ strne r1, [r4, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r3-r5,pc}
+_020DE564: ; 0x020DE564
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x28]
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+_020DE574:
+ mov r0, r5
+ bl __prep_buffer
+_020DE57C: ; 0x020DE57C
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start fread
+fread: ; 0x020DE584
+ stmdb sp!, {r4-r10,lr}
+ ldr r4, _020DE67C ; =0x02106A58
+ mov r7, r3
+ cmp r7, r4
+ moveq r6, #0x2
+ mov r10, r0
+ movne r6, #0x5
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DE680 ; =0x021D70D0
+ mov r9, r1
+ add r0, r5, r4
+ mov r8, r2
+ bl OS_TryLockMutex
+_020DE5BC: ; 0x020DE5BC
+ cmp r0, #0x0
+ bne _020DE5E8
+ ldr r0, _020DE684 ; =0x021D3498
+ ldr r2, _020DE688 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DE640
+_020DE5E8:
+ ldr r0, _020DE684 ; =0x021D3498
+ ldr r1, _020DE688 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE618
+ ldr r1, _020DE68C ; =0x021D70AC
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DE640
+_020DE618:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DE684 ; =0x021D3498
+ ldr r2, _020DE688 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DE640:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ bl __fread
+ ldr r1, _020DE68C ; =0x021D70AC
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DE674
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DE674:
+ mov r0, r7
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020DE67C: .word 0x02106A58
+_020DE680: .word 0x021D70D0
+_020DE684: .word 0x021D3498
+_020DE688: .word 0x021D7088
+_020DE68C: .word 0x021D70AC
+
+ arm_func_start __fread
+__fread: ; 0x020DE690
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x4
+ mov r7, r3
+ mov r9, r0
+ mov r8, r1
+ mov r0, r7
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+_020DE6B4: ; 0x020DE6B4
+ cmp r0, #0x0
+ bne _020DE6C8
+ mov r0, r7
+ mvn r1, #0x0
+ bl fwide
+_020DE6C8:
+ muls r4, r8, r4
+ beq _020DE6EC
+ ldrb r0, [r7, #0xd]
+ cmp r0, #0x0
+ bne _020DE6EC
+ ldr r1, [r7, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DE6F8
+_020DE6EC:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r3-r10,pc}
+_020DE6F8:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ ldr r1, [r7, #0x8]
+ cmpne r0, #0x2
+ mov r6, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r6, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DE74C
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x1
+ beq _020DE74C
+ bic r0, r1, #0x7
+ orr r0, r0, #0x2
+ str r0, [r7, #0x8]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE74C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ bhs _020DE778
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE778:
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ tst r0, #0x1
+ beq _020DE7B0
+ bl __flush_line_buffered_output_files
+_020DE790: ; 0x020DE790
+ cmp r0, #0x0
+ beq _020DE7B0
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE7B0:
+ cmp r4, #0x0
+ mov r5, #0x0
+ beq _020DE874
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ blo _020DE874
+ mov r10, r5
+_020DE7D4:
+ mov r0, r7
+ mov r1, r10
+ bl fwide
+ cmp r0, #0x1
+ ldr r0, [r7, #0x8]
+ bne _020DE808
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1c
+ ldrh r0, [r0, #0xe]
+ add r5, r5, #0x2
+ sub r4, r4, #0x2
+ strh r0, [r9], #0x2
+ b _020DE820
+_020DE808:
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1d
+ ldrb r0, [r0, #0xf]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ strb r0, [r9], #0x1
+_020DE820:
+ ldr r1, [r7, #0x8]
+ cmp r4, #0x0
+ mov r0, r1, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x1
+ bic r1, r1, #0x7
+ and r0, r0, #0x7
+ orr r0, r1, r0
+ str r0, [r7, #0x8]
+ beq _020DE85C
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ bhs _020DE7D4
+_020DE85C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ ldreq r0, [r7, #0x30]
+ streq r0, [r7, #0x28]
+_020DE874:
+ cmp r4, #0x0
+ beq _020DE938
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ cmpeq r6, #0x0
+ beq _020DE938
+ mov r10, #0x0
+_020DE890:
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ bne _020DE8E4
+ mov r0, r7
+ mov r1, r10
+ mov r2, r10
+ bl __load_buffer
+_020DE8AC: ; 0x020DE8AC
+ cmp r0, #0x0
+ beq _020DE8E4
+ cmp r0, #0x1
+ mov r0, #0x1
+ streqb r0, [r7, #0xd]
+ beq _020DE8D4
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+_020DE8D4:
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ mov r4, #0x0
+ b _020DE938
+_020DE8E4:
+ ldr r0, [r7, #0x28]
+ str r0, [sp, #0x0]
+ cmp r0, r4
+ strhi r4, [sp, #0x0]
+ ldr r1, [r7, #0x24]
+ ldr r2, [sp, #0x0]
+ mov r0, r9
+ bl memcpy
+ ldr r2, [sp, #0x0]
+ ldr r0, [r7, #0x24]
+ subs r4, r4, r2
+ add r0, r0, r2
+ str r0, [r7, #0x24]
+ ldr r1, [r7, #0x28]
+ ldr r0, [sp, #0x0]
+ add r9, r9, r2
+ sub r0, r1, r0
+ add r5, r5, r2
+ str r0, [r7, #0x28]
+ cmpne r6, #0x0
+ bne _020DE890
+_020DE938:
+ cmp r4, #0x0
+ beq _020DE9C4
+ cmp r6, #0x0
+ bne _020DE9C4
+ ldr r6, [r7, #0x1c]
+ ldr r10, [r7, #0x20]
+ add r1, sp, #0x0
+ str r9, [r7, #0x1c]
+ mov r0, r7
+ mov r2, #0x1
+ str r4, [r7, #0x20]
+ bl __load_buffer
+_020DE968: ; 0x020DE968
+ cmp r0, #0x0
+ beq _020DE9A4
+ cmp r0, #0x1
+ mov r0, #0x1
+ bne _020DE98C
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ b _020DE9A4
+_020DE98C:
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9A4:
+ ldr r1, [sp, #0x0]
+ mov r0, r7
+ str r6, [r7, #0x1c]
+ str r10, [r7, #0x20]
+ add r5, r5, r1
+ bl __prep_buffer
+_020DE9BC: ; 0x020DE9BC
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9C4:
+ mov r0, r5
+ mov r1, r8
+ bl _u32_div_f
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r10,pc}
+
+arm_func_start __fwrite
+__fwrite:
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x8
+ mov r9, r3
+ mov r10, r0
+ str r1, [sp, #0x0]
+ mov r0, r9
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+_020DE9FC: ; 0x020DE9FC
+ cmp r0, #0x0
+ bne _020DEA10
+ mov r0, r9
+ mvn r1, #0x0
+ bl fwide
+_020DEA10:
+ ldr r0, [sp, #0x0]
+ muls r5, r0, r4
+ beq _020DEA38
+ ldrb r0, [r9, #0xd]
+ cmp r0, #0x0
+ bne _020DEA38
+ ldr r1, [r9, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DEA44
+_020DEA38:
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r3-r11,pc}
+_020DEA44:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ cmpne r0, #0x2
+ ldr r1, [r9, #0x8]
+ cmpne r0, #0x1
+ mov r8, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r8, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DEA9C
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x2
+ beq _020DEA9C
+ bic r0, r1, #0x7
+ orr r1, r0, #0x1
+ mov r0, r9
+ str r1, [r9, #0x8]
+ bl __prep_buffer
+_020DEA9C:
+ ldr r0, [r9, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ beq _020DEAC8
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ str r0, [r9, #0x28]
+ ldmia sp!, {r3-r11,pc}
+_020DEAC8:
+ cmp r5, #0x0
+ mov r6, #0x0
+ beq _020DEBF0
+ ldr r0, [r9, #0x1c]
+ ldr r2, [r9, #0x24]
+ cmp r2, r0
+ cmpeq r8, #0x0
+ beq _020DEBF0
+ ldr r1, [r9, #0x20]
+ sub r0, r2, r0
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+ mov r11, #0xa
+ mov r4, #0x0
+_020DEB00:
+ ldr r0, [r9, #0x28]
+ mov r7, r4
+ str r0, [sp, #0x4]
+ cmp r0, r5
+ strhi r5, [sp, #0x4]
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x1
+ bne _020DEB50
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB50
+ mov r0, r10
+ mov r1, r11
+ bl __memrchr
+ movs r7, r0
+ addne r0, r7, #0x1
+ subne r0, r0, r10
+ strne r0, [sp, #0x4]
+_020DEB50:
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB90
+ ldr r0, [r9, #0x24]
+ mov r1, r10
+ bl memcpy
+ ldr r2, [sp, #0x4]
+ ldr r0, [r9, #0x24]
+ add r10, r10, r2
+ add r0, r0, r2
+ str r0, [r9, #0x24]
+ ldr r1, [r9, #0x28]
+ ldr r0, [sp, #0x4]
+ sub r5, r5, r2
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+_020DEB90:
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ beq _020DEBB4
+ cmp r7, #0x0
+ bne _020DEBB4
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ movs r0, r0, lsr #0x1e
+ bne _020DEBDC
+_020DEBB4:
+ mov r0, r9
+ mov r1, #0x0
+ bl __flush_buffer
+_020DEBC0: ; 0x020DEBC0
+ cmp r0, #0x0
+ beq _020DEBDC
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r5, #0x0
+ str r5, [r9, #0x28]
+ b _020DEBF0
+_020DEBDC:
+ ldr r0, [sp, #0x4]
+ cmp r5, #0x0
+ add r6, r6, r0
+ cmpne r8, #0x0
+ bne _020DEB00
+_020DEBF0:
+ cmp r5, #0x0
+ beq _020DEC5C
+ cmp r8, #0x0
+ bne _020DEC5C
+ ldr r4, [r9, #0x1c]
+ ldr r7, [r9, #0x20]
+ add r2, r10, r5
+ str r10, [r9, #0x1c]
+ str r5, [r9, #0x20]
+ add r1, sp, #0x4
+ mov r0, r9
+ str r2, [r9, #0x24]
+ bl __flush_buffer
+_020DEC24: ; 0x020DEC24
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x4]
+ addeq r6, r6, r0
+ beq _020DEC44
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC44:
+ str r4, [r9, #0x1c]
+ mov r0, r9
+ str r7, [r9, #0x20]
+ bl __prep_buffer
+_020DEC54: ; 0x020DEC54
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC5C:
+ ldr r0, [r9, #0x4]
+ ldr r1, [sp, #0x0]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x2
+ movne r0, #0x0
+ strne r0, [r9, #0x28]
+ mov r0, r6
+ bl _u32_div_f
+ add sp, sp, #0x8
+ ldmia sp!, {r3-r11,pc}
+
+ arm_func_start fclose
+fclose: ; 0x020DEC88
+ stmdb sp!, {r3-r5,lr}
+ movs r5, r0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020DEC98: ; 0x020DEC98
+ ldr r1, [r5, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020DECAC: ; 0x020DECAC
+ bl fflush
+ mov r4, r0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x44]
+ blx r1
+ ldr r1, [r5, #0x4]
+ mov r2, #0x0
+ bic r1, r1, #0x380
+ str r1, [r5, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1f
+ subne r0, r2, #0x1
+ ldmneia sp!, {r3-r5,pc}
+_020DECE8: ; 0x020DECE8
+ cmp r4, #0x0
+ cmpeq r0, #0x0
+ movne r2, #0x1
+ rsb r0, r2, #0x0
+ ldmia sp!, {r3-r5,pc}
+
+arm_func_start fflush
+fflush:
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ bne _020DED10
+ bl __flush_all
+ ldmia sp!, {r4,pc}
+_020DED10:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x0
+ bne _020DED2C
+ ldr r0, [r4, #0x4]
+ mov r1, r0, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ bne _020DED34
+_020DED2C:
+ mvn r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DED34:
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020DED48: ; 0x020DED48
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x3
+ biccs r0, r0, #0x7
+ orrcs r0, r0, #0x2
+ strcs r0, [r4, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ moveq r0, #0x0
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ beq _020DEDA0
+ bic r0, r0, #0x7
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DEDA0:
+ mov r0, r4
+ mov r1, #0x0
+ bl __flush_buffer
+_020DEDAC: ; 0x020DEDAC
+ cmp r0, #0x0
+ mov r0, #0x0
+ beq _020DEDCC
+ mov r1, #0x1
+ strb r1, [r4, #0xd]
+ str r0, [r4, #0x28]
+ sub r0, r0, #0x1
+ ldmia sp!, {r4,pc}
+_020DEDCC:
+ ldr r1, [r4, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r4, #0x8]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x28]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start _ftell
+_ftell: ; 0x020DEDE4
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ add r1, r1, #0xff
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ bhi _020DEE10
+ ldrb r1, [r0, #0xd]
+ cmp r1, #0x0
+ beq _020DEE24
+_020DEE10:
+ ldr r0, _020DEE5C ; =0x021D74A8
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ bx lr
+_020DEE24:
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ movs r12, r1, lsr #0x1d
+ ldreq r0, [r0, #0x18]
+ bxeq lr
+ ldr r2, [r0, #0x24]
+ ldr r1, [r0, #0x1c]
+ ldr r3, [r0, #0x34]
+ sub r0, r2, r1
+ cmp r12, #0x3
+ add r0, r3, r0
+ subcs r1, r12, #0x2
+ subcs r0, r0, r1
+ bx lr
+ .balign 4
+_020DEE5C: .word 0x021D74A8
+
+ arm_func_start ftell
+ftell: ; 0x020DEE60
+ stmdb sp!, {r3-r7,lr}
+ ldr r1, _020DEF60 ; =0x02106A58
+ mov r7, r0
+ cmp r7, r1
+ moveq r6, #0x2
+ beq _020DEE98
+ ldr r0, _020DEF64 ; =0x02106AA4
+ cmp r7, r0
+ moveq r6, #0x3
+ beq _020DEE98
+ ldr r0, _020DEF68 ; =0x02106AF0
+ cmp r7, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DEE98:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DEF6C ; =0x021D70D0
+ add r0, r5, r4
+ bl OS_TryLockMutex
+_020DEEAC: ; 0x020DEEAC
+ cmp r0, #0x0
+ bne _020DEED8
+ ldr r0, _020DEF70 ; =0x021D3498
+ ldr r2, _020DEF74 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DEF30
+_020DEED8:
+ ldr r0, _020DEF70 ; =0x021D3498
+ ldr r1, _020DEF74 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DEF08
+ ldr r1, _020DEF78 ; =0x021D70AC
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DEF30
+_020DEF08:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DEF70 ; =0x021D3498
+ ldr r2, _020DEF74 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DEF30:
+ mov r0, r7
+ bl _ftell
+ ldr r1, _020DEF78 ; =0x021D70AC
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DEF58
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DEF58:
+ mov r0, r7
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020DEF60: .word 0x02106A58
+_020DEF64: .word 0x02106AA4
+_020DEF68: .word 0x02106AF0
+_020DEF6C: .word 0x021D70D0
+_020DEF70: .word 0x021D3498
+_020DEF74: .word 0x021D7088
+_020DEF78: .word 0x021D70AC
+
+ arm_func_start _fseek
+_fseek: ; 0x020DEF7C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r1, [r5, #0x4]
+ mov r4, r2
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ ldreqb r1, [r5, #0xd]
+ cmpeq r1, #0x0
+ beq _020DEFC8
+ ldr r0, _020DF160 ; =0x021D74A8
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DEFC8:
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DF018
+ mov r1, #0x0
+ bl __flush_buffer
+_020DEFE4: ; 0x020DEFE4
+ cmp r0, #0x0
+ beq _020DF018
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =0x021D74A8
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF018:
+ cmp r4, #0x1
+ bne _020DF038
+ mov r0, r5
+ mov r4, #0x0
+ bl _ftell
+ ldr r1, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+_020DF038:
+ cmp r4, #0x2
+ beq _020DF0CC
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ beq _020DF0CC
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020DF0CC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, #0x18]
+ cmp r2, r0
+ bhs _020DF088
+ ldr r0, [r5, #0x34]
+ cmp r2, r0
+ bhs _020DF098
+_020DF088:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF098:
+ ldr r1, [r5, #0x1c]
+ sub r0, r2, r0
+ add r0, r1, r0
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #0x14]
+ sub r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ orr r0, r0, #0x2
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF0CC:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+_020DF0D8:
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ movs r0, r0, lsr #0x1d
+ bne _020DF150
+ ldr r12, [r5, #0x38]
+ cmp r12, #0x0
+ beq _020DF13C
+ ldr r0, [r5, #0x0]
+ ldr r3, [r5, #0x48]
+ add r1, sp, #0x14
+ mov r2, r4
+ blx r12
+ cmp r0, #0x0
+ beq _020DF13C
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =0x021D74A8
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF13C:
+ mov r1, #0x0
+ strb r1, [r5, #0xc]
+ ldr r0, [sp, #0x14]
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x28]
+_020DF150:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DF160: .word 0x021D74A8
+
+arm_func_start fseek
+fseek:
+ stmdb sp!, {r3-r9,lr}
+ ldr r3, _020DF274 ; =0x02106A58
+ mov r9, r0
+ cmp r9, r3
+ mov r8, r1
+ mov r7, r2
+ moveq r6, #0x2
+ beq _020DF1A4
+ ldr r0, _020DF278 ; =0x02106AA4
+ cmp r9, r0
+ moveq r6, #0x3
+ beq _020DF1A4
+ ldr r0, _020DF27C ; =0x02106AF0
+ cmp r9, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DF1A4:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DF280 ; =0x021D70D0
+ add r0, r5, r4
+ bl OS_TryLockMutex
+_020DF1B8: ; 0x020DF1B8
+ cmp r0, #0x0
+ bne _020DF1E4
+ ldr r0, _020DF284 ; =0x021D3498
+ ldr r2, _020DF288 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DF23C
+_020DF1E4:
+ ldr r0, _020DF284 ; =0x021D3498
+ ldr r1, _020DF288 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DF214
+ ldr r1, _020DF28C ; =0x021D70AC
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DF23C
+_020DF214:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DF284 ; =0x021D3498
+ ldr r2, _020DF288 ; =0x021D7088
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =0x021D70AC
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DF23C:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r7
+ bl _fseek
+ ldr r1, _020DF28C ; =0x021D70AC
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DF26C
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DF26C:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DF274: .word 0x02106A58
+_020DF278: .word 0x02106AA4
+_020DF27C: .word 0x02106AF0
+_020DF280: .word 0x021D70D0
+_020DF284: .word 0x021D3498
+_020DF288: .word 0x021D7088
+_020DF28C: .word 0x021D70AC
+
+ arm_func_start rewind
+rewind: ; 0x020DF290
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r4, r0
+ mov r2, r1
+ strb r1, [r4, #0xd]
+ bl fseek
+_020DF2A8: ; 0x020DF2A8
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ ldmia sp!, {r4,pc}
+
+arm_func_start mbtowc
+mbtowc:
+ stmdb sp!, {r3,lr}
+ ldr r3, _020DF2CC ; =0x02106C98
+ ldr r3, [r3, #0x8]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF2CC: .word 0x02106C98
+
+ arm_func_start __mbtowc_noconv
+__mbtowc_noconv: ; 0x020DF2D0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r2, #0x0
+ mvneq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ ldrneb r2, [r1, #0x0]
+ strneh r2, [r0, #0x0]
+ ldrsb r0, [r1, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ movne r0, #0x1
+ bx lr
+
+ arm_func_start __wctomb_noconv
+__wctomb_noconv: ; 0x020DF308
+ cmp r0, #0x0
+ moveq r0, #0x0
+ strneb r1, [r0, #0x0]
+ movne r0, #0x1
+ bx lr
+
+ arm_func_start wctomb
+wctomb: ; 0x020DF31C
+ stmdb sp!, {r3,lr}
+ ldr r2, _020DF334 ; =0x02106C98
+ ldr r2, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF334: .word 0x02106C98
+
+ arm_func_start mbstowcs
+mbstowcs: ; 0x020DF338
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r1
+ mov r8, r0
+ mov r0, r7
+ mov r6, r2
+ bl strlen
+ mov r5, r0
+ cmp r8, #0x0
+ mov r4, #0x0
+ beq _020DF3B8
+ cmp r6, #0x0
+ bls _020DF3B8
+_020DF368:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _020DF3A0
+ mov r0, r8
+ mov r1, r7
+ mov r2, r5
+ bl mbtowc
+_020DF384: ; 0x020DF384
+ cmp r0, #0x0
+ add r8, r8, #0x2
+ addgt r7, r7, r0
+ subgt r5, r5, r0
+ bgt _020DF3AC
+ mvn r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020DF3A0:
+ mov r0, #0x0
+ strh r0, [r8, #0x0]
+ b _020DF3B8
+_020DF3AC:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blo _020DF368
+_020DF3B8:
+ mov r0, r4
+ ldmia sp!, {r4-r8,pc}
+
+arm_func_start wcstombs
+wcstombs:
+ stmdb sp!, {r3-r9,lr}
+ movs r4, r0
+ mov r9, r1
+ cmpne r9, #0x0
+ mov r8, r2
+ mov r7, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r9,pc}
+_020DF3E0: ; 0x020DF3E0
+ add r6, sp, #0x0
+_020DF3E4:
+ ldrh r1, [r9, #0x0]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streqb r0, [r4, r7]
+ beq _020DF430
+ mov r0, r6
+ add r9, r9, #0x2
+ bl wctomb
+ mov r5, r0
+ add r0, r7, r5
+ cmp r0, r8
+ bhi _020DF430
+ mov r1, r6
+ mov r2, r5
+ add r0, r4, r7
+ bl strncpy
+ add r7, r7, r5
+ cmp r7, r8
+ bls _020DF3E4
+_020DF430:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+
+ arm_func_start memcpy
+memcpy: ; 0x020DF438
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF444:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF444
+ bx lr
+
+ arm_func_start memmove
+memmove: ; 0x020DF458
+ cmp r1, r0
+ blo _020DF480
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF46C:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF46C
+ bx lr
+_020DF480:
+ cmp r2, #0x0
+ add r3, r1, r2
+ add r12, r0, r2
+ bxeq lr
+_020DF490:
+ ldrsb r1, [r3, #-0x1]!
+ subs r2, r2, #0x1
+ strb r1, [r12, #-0x1]!
+ bne _020DF490
+ bx lr
+
+ arm_func_start Call_FillMemWithValue
+Call_FillMemWithValue: ; 0x020DF4A4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl __fill_mem
+ mov r0, r4
+ ldmia sp!, {r4,pc}
+
+arm_func_start memchr
+memchr:
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ beq _020DF4DC
+_020DF4C4:
+ ldrb r1, [r0], #0x1
+ cmp r1, r3
+ subeq r0, r0, #0x1
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4C4
+_020DF4DC:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start __memrchr
+__memrchr: ; 0x020DF4E4
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ add r0, r0, r2
+ beq _020DF508
+_020DF4F4:
+ ldrb r1, [r0, #-0x1]!
+ cmp r1, r3
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4F4
+_020DF508:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start memcmp
+memcmp: ; 0x020DF510
+ cmp r2, #0x0
+ beq _020DF548
+_020DF518:
+ ldrb r12, [r0], #0x1
+ ldrb r3, [r1], #0x1
+ cmp r12, r3
+ beq _020DF540
+ ldrb r2, [r0, #-0x1]
+ ldrb r0, [r1, #-0x1]
+ cmp r2, r0
+ mvncc r0, #0x0
+ movcs r0, #0x1
+ bx lr
+_020DF540:
+ subs r2, r2, #0x1
+ bne _020DF518
+_020DF548:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start __fill_mem
+__fill_mem: ; 0x020DF550
+ cmp r2, #0x20
+ and r3, r1, #0xff
+ blo _020DF5E4
+ rsb r1, r0, #0x0
+ ands r12, r1, #0x3
+ beq _020DF57C
+ sub r2, r2, r12
+ and r1, r3, #0xff
+_020DF570:
+ strb r1, [r0], #0x1
+ subs r12, r12, #0x1
+ bne _020DF570
+_020DF57C:
+ cmp r3, #0x0
+ beq _020DF594
+ mov r1, r3, lsl #0x10
+ orr r1, r1, r3, lsl #0x18
+ orr r1, r1, r3, lsl #0x8
+ orr r3, r3, r1
+_020DF594:
+ movs r1, r2, lsr #0x5
+ beq _020DF5C8
+_020DF59C:
+ str r3, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r3, [r0, #0xc]
+ str r3, [r0, #0x10]
+ str r3, [r0, #0x14]
+ str r3, [r0, #0x18]
+ str r3, [r0, #0x1c]
+ add r0, r0, #0x20
+ subs r1, r1, #0x1
+ bne _020DF59C
+_020DF5C8:
+ and r1, r2, #0x1f
+ movs r1, r1, lsr #0x2
+ beq _020DF5E0
+_020DF5D4:
+ str r3, [r0], #0x4
+ subs r1, r1, #0x1
+ bne _020DF5D4
+_020DF5E0:
+ and r2, r2, #0x3
+_020DF5E4:
+ cmp r2, #0x0
+ bxeq lr
+ and r1, r3, #0xff
+_020DF5F0:
+ strb r1, [r0], #0x1
+ subs r2, r2, #0x1
+ bne _020DF5F0
+ bx lr
+
+ arm_func_start parse_format_printf
+parse_format_printf: ; 0x020DF600
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrsb r3, [r0, #0x1]
+ mov r4, #0x0
+ mov r5, #0x1
+ mov lr, r2
+ strb r5, [sp, #0x0]
+ strb r4, [sp, #0x1]
+ strb r4, [sp, #0x2]
+ strb r4, [sp, #0x3]
+ strb r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r4, [sp, #0xc]
+ cmp r3, #0x25
+ add r12, r0, #0x1
+ bne _020DF65C
+ add r0, sp, #0x0
+ strb r3, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF65C:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020DF670:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020DF6A0
+ bge _020DF6C8
+ cmp r3, #0x23
+ bgt _020DF6F8
+ cmp r3, #0x20
+ blt _020DF6F8
+ beq _020DF6D0
+ cmp r3, #0x23
+ beq _020DF6E0
+ b _020DF6F8
+_020DF6A0:
+ cmp r3, #0x30
+ bgt _020DF6F8
+ cmp r3, #0x2d
+ blt _020DF6F8
+ beq _020DF6C0
+ cmp r3, #0x30
+ beq _020DF6E8
+ b _020DF6F8
+_020DF6C0:
+ strb r6, [sp, #0x0]
+ b _020DF6FC
+_020DF6C8:
+ strb r7, [sp, #0x1]
+ b _020DF6FC
+_020DF6D0:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020DF6FC
+_020DF6E0:
+ strb r7, [sp, #0x3]
+ b _020DF6FC
+_020DF6E8:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020DF6FC
+_020DF6F8:
+ mov r8, r0
+_020DF6FC:
+ cmp r8, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ bne _020DF670
+ cmp r3, #0x2a
+ bne _020DF744
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020DF73C
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020DF73C:
+ ldrsb r3, [r12, #0x1]!
+ b _020DF794
+_020DF744:
+ ldr r4, _020DFB88 ; =0x0210430C
+ mov r5, #0x0
+ mov r0, #0xa
+ b _020DF768
+_020DF754:
+ ldr r2, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r2, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r6, [sp, #0x8]
+_020DF768:
+ cmp r3, #0x0
+ blt _020DF778
+ cmp r3, #0x80
+ blt _020DF780
+_020DF778:
+ mov r2, r5
+ b _020DF78C
+_020DF780:
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020DF78C:
+ cmp r2, #0x0
+ bne _020DF754
+_020DF794:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020DFB8C ; =0x000001FD
+ cmp r2, r0
+ ble _020DF7C4
+ mov r1, #0xff
+ add r0, sp, #0x0
+ strb r1, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF7C4:
+ cmp r3, #0x2e
+ bne _020DF858
+ ldrsb r3, [r12, #0x1]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020DF808
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrsb r3, [r12, #0x1]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020DF858
+_020DF808:
+ ldr r2, _020DFB88 ; =0x0210430C
+ mov r4, #0x0
+ mov r0, #0xa
+ b _020DF82C
+_020DF818:
+ ldr r1, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r1, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r5, [sp, #0xc]
+_020DF82C:
+ cmp r3, #0x0
+ blt _020DF83C
+ cmp r3, #0x80
+ blt _020DF844
+_020DF83C:
+ mov r1, r4
+ b _020DF850
+_020DF844:
+ mov r1, r3, lsl #0x1
+ ldrh r1, [r2, r1]
+ and r1, r1, #0x8
+_020DF850:
+ cmp r1, #0x0
+ bne _020DF818
+_020DF858:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020DF890
+ cmp r3, #0x68
+ blt _020DF884
+ beq _020DF8AC
+ cmp r3, #0x6a
+ beq _020DF8F8
+ cmp r3, #0x6c
+ beq _020DF8C8
+ b _020DF91C
+_020DF884:
+ cmp r3, #0x4c
+ beq _020DF8EC
+ b _020DF91C
+_020DF890:
+ cmp r3, #0x74
+ bgt _020DF8A0
+ beq _020DF904
+ b _020DF91C
+_020DF8A0:
+ cmp r3, #0x7a
+ beq _020DF910
+ b _020DF91C
+_020DF8AC:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8C8:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020DF920
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8EC:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF8F8:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF904:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF910:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF91C:
+ mov r0, #0x0
+_020DF920:
+ cmp r0, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ strb r3, [sp, #0x5]
+ cmp r3, #0x61
+ bgt _020DF974
+ bge _020DFA5C
+ cmp r3, #0x47
+ bgt _020DF968
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020DFB68
+_020DF94C: ; 0x020DF94C
+ b _020DFA5C
+_020DF950: ; 0x020DF950
+ b _020DFB68
+_020DF954: ; 0x020DF954
+ b _020DFB68
+_020DF958: ; 0x020DF958
+ b _020DFB68
+_020DF95C: ; 0x020DF95C
+ b _020DFAA4
+_020DF960: ; 0x020DF960
+ b _020DFA24
+_020DF964: ; 0x020DF964
+ b _020DFA94
+_020DF968:
+ cmp r3, #0x58
+ beq _020DF9E8
+ b _020DFB68
+_020DF974:
+ cmp r3, #0x63
+ bgt _020DF984
+ beq _020DFB04
+ b _020DFB68
+_020DF984:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020DFB68
+_020DF994:
+ b _020DF9E8
+_020DF998:
+ b _020DFAA4
+_020DF99C:
+ b _020DFA24
+_020DF9A0:
+ b _020DFA94
+_020DF9A4:
+ b _020DFB68
+_020DF9A8:
+ b _020DF9E8
+_020DF9AC:
+ b _020DFB68
+_020DF9B0:
+ b _020DFB68
+_020DF9B4:
+ b _020DFB68
+_020DF9B8:
+ b _020DFB68
+_020DF9BC:
+ b _020DFB54
+_020DF9C0:
+ b _020DF9E8
+_020DF9C4:
+ b _020DFAE0
+_020DF9C8:
+ b _020DFB68
+_020DF9CC:
+ b _020DFB68
+_020DF9D0:
+ b _020DFB30
+_020DF9D4:
+ b _020DFB68
+_020DF9D8:
+ b _020DF9E8
+_020DF9DC:
+ b _020DFB68
+_020DF9E0:
+ b _020DFB68
+_020DF9E4:
+ b _020DF9E8
+_020DF9E8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020DFB70
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020DFB70
+_020DFA24:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFA5C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0xd
+ streq r0, [sp, #0xc]
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFA94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020DFAA4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFAE0:
+ mov r3, #0x78
+ mov r2, #0x1
+ mov r1, #0x3
+ mov r0, #0x8
+ strb r3, [sp, #0x5]
+ strb r2, [sp, #0x3]
+ strb r1, [sp, #0x4]
+ str r0, [sp, #0xc]
+ b _020DFB70
+_020DFB04:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB30:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB54:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB68:
+ mov r0, #0xff
+ strb r0, [sp, #0x5]
+_020DFB70:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x1
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020DFB88: .word 0x0210430C
+_020DFB8C: .word 0x000001FD
+
+ arm_func_start long2str
+long2str: ; 0x020DFB90
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ movs r10, r0
+ mov r0, #0x0
+ mov r5, r1
+ str r0, [sp, #0xc]
+ ldr r7, [sp, #0x4c]
+ mov r6, r0
+ strb r0, [r5, #-0x1]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrb r8, [sp, #0x45]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020DFC04
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFBF0
+ cmp r8, #0x6f
+ beq _020DFC04
+_020DFBF0:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFC04:
+ cmp r8, #0x69
+ bgt _020DFC2C
+ bge _020DFC60
+ cmp r8, #0x58
+ bgt _020DFC20
+ beq _020DFC8C
+ b _020DFC94
+_020DFC20:
+ cmp r8, #0x64
+ beq _020DFC60
+ b _020DFC94
+_020DFC2C:
+ cmp r8, #0x6f
+ bgt _020DFC40
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020DFC94
+_020DFC40:
+ cmp r8, #0x78
+ bgt _020DFC94
+ cmp r8, #0x75
+ blt _020DFC94
+ beq _020DFC80
+ cmp r8, #0x78
+ beq _020DFC8C
+ b _020DFC94
+_020DFC60:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020DFC94
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020DFC94
+_020DFC80:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020DFC94
+_020DFC8C:
+ mov r4, #0x10
+ mov r11, #0x0
+_020DFC94:
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ mov r9, r1
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ cmp r9, #0xa
+ mov r10, r0
+ addlt r9, r9, #0x30
+ blt _020DFCCC
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020DFCCC:
+ cmp r10, #0x0
+ strb r9, [r5, #-0x1]!
+ add r6, r6, #0x1
+ bne _020DFC94
+ cmp r4, #0x8
+ bne _020DFD00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r5, #-0x1]!
+ addne r6, r6, #0x1
+_020DFD00:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020DFD34
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020DFD34
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020DFD34:
+ ldr r0, [sp, #0x0]
+ sub r1, r0, r5
+ ldr r0, _020DFDD8 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020DFD78
+ mov r0, #0x30
+_020DFD68:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strb r0, [r5, #-0x1]!
+ blt _020DFD68
+_020DFD78:
+ cmp r4, #0x10
+ bne _020DFD94
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r5, #-0x1]
+ strneb r0, [r5, #-0x2]!
+_020DFD94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r5, #-0x1]!
+ bne _020DFDC4
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r5, #-0x1]!
+ beq _020DFDC4
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqb r0, [r5, #-0x1]!
+_020DFDC4:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DFDD8: .word 0x000001FD
+
+ arm_func_start longlong2str
+longlong2str: ; 0x020DFDDC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x18
+ mov r9, r1
+ mov r1, #0x0
+ mov r10, r0
+ mov r6, r2
+ mov r0, r1
+ strb r0, [r6, #-0x1]!
+ ldr r0, [sp, #0x58]
+ cmp r9, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [sp, #0x4f]
+ cmpeq r10, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x54]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x8]
+ ldrb r0, [sp, #0x4d]
+ mov r7, r1
+ ldrb r8, [sp, #0x51]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020DFE6C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFE58
+ cmp r8, #0x6f
+ beq _020DFE6C
+_020DFE58:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFE6C:
+ cmp r8, #0x69
+ bgt _020DFE94
+ bge _020DFEC4
+ cmp r8, #0x58
+ bgt _020DFE88
+ beq _020DFF18
+ b _020DFF24
+_020DFE88:
+ cmp r8, #0x64
+ beq _020DFEC4
+ b _020DFF24
+_020DFE94:
+ cmp r8, #0x6f
+ bgt _020DFEA4
+ beq _020DFEF8
+ b _020DFF24
+_020DFEA4:
+ cmp r8, #0x78
+ bgt _020DFF24
+ cmp r8, #0x75
+ blt _020DFF24
+ beq _020DFF08
+ cmp r8, #0x78
+ beq _020DFF18
+ b _020DFF24
+_020DFEC4:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020DFF24
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020DFEEC
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020DFEEC:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020DFF24
+_020DFEF8:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020DFF24
+_020DFF08:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020DFF24
+_020DFF18:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020DFF24:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ull_mod
+ mov r4, r0
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ll_udiv
+ mov r10, r0
+ cmp r4, #0xa
+ mov r9, r1
+ addlt r0, r4, #0x30
+ blt _020DFF70
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020DFF70:
+ strb r0, [r6, #-0x1]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020DFF24
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020DFFB0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r6, #-0x1]!
+ addne r7, r7, #0x1
+_020DFFB0:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E0000
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0xc]
+ cmpeq r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x1
+ strne r0, [sp, #0x10]
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0000
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E0000:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E00B8 ; =0x000001FD
+ sub r2, r0, r6
+ ldr r0, [sp, #0x10]
+ add r0, r0, r2
+ cmp r0, r1
+ addgt sp, sp, #0x18
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldr r0, [sp, #0x10]
+ cmp r7, r0
+ bge _020E0050
+ mov r1, #0x30
+_020E003C:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strb r1, [r6, #-0x1]!
+ blt _020E003C
+_020E0050:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0070
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r6, #-0x1]
+ strneb r0, [r6, #-0x2]!
+_020E0070:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r6, #-0x1]!
+ bne _020E00A4
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r6, #-0x1]!
+ beq _020E00A4
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqb r0, [r6, #-0x1]!
+_020E00A4:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E00B8: .word 0x000001FD
+
+ arm_func_start double2hex
+double2hex: ; 0x020E00BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E056C ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrb r6, [sp, #0x79]
+ ldrb r5, [sp, #0x77]
+ ldrb r4, [sp, #0x75]
+ ldr r1, [sp, #0x68]
+ ldr r2, [sp, #0x6c]
+ addgt sp, sp, #0x44
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r10,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r10, #0x0
+ mov r9, #0x20
+ add r0, sp, #0x8
+ add r3, sp, #0xc
+ strb r10, [sp, #0x8]
+ strh r9, [sp, #0xa]
+ bl __num2dec_internal2
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ bl fabs
+ mov r2, r0
+ mov r0, r10
+ mov r3, r1
+ mov r1, r0
+ bl _deq
+ bne _020E0188
+ ldr r3, _020E0570 ; =0x02106DA0
+ sub r0, r8, #0x6
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ add sp, sp, #0x44
+ strb r2, [r8, #-0x6]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r2, [r3, #0x4]
+ ldrb r1, [r3, #0x5]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0188:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E0298
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0224
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E01E8
+ ldr r3, _020E0574 ; =0x02106DA8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E01E8:
+ ldr r3, _020E0578 ; =0x02106DB0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0224:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0264
+ ldr r3, _020E057C ; =0x02106DB8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0264:
+ ldr r3, _020E0580 ; =0x02106DBC
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0298:
+ cmp r0, #0x4e
+ bne _020E03A4
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0330
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E02F4
+ ldr r3, _020E0584 ; =0x02106DC0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E02F4:
+ ldr r3, _020E0588 ; =0x02106DC8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0330:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0370
+ ldr r3, _020E058C ; =0x02106DD0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0370:
+ ldr r3, _020E0590 ; =0x02106DD4
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E03A4:
+ mov r3, r10
+ mov r1, #0x1
+ mov r0, #0x64
+ add r9, sp, #0x68
+ strb r1, [sp, #0x34]
+ strb r1, [sp, #0x35]
+ strb r3, [sp, #0x36]
+ strb r3, [sp, #0x37]
+ strb r3, [sp, #0x38]
+ str r3, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ strb r0, [sp, #0x39]
+_020E03D4:
+ rsb r1, r3, #0x7
+ ldrsb r2, [r9, r3]
+ ldrsb r0, [r9, r1]
+ strb r0, [r9, r3]
+ add r3, r3, #0x1
+ strb r2, [r9, r1]
+ cmp r3, #0x4
+ blt _020E03D4
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E0594 ; =0x000007FF
+ mov r0, r0, lsl #0x11
+ orr r1, r0, r1, lsl #0x19
+ add r0, sp, #0x34
+ and lr, r9, r1, lsr #0x15
+ sub r12, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r12, {r0-r3}
+ rsb r0, r9, #0x400
+ mov r1, r8
+ add r0, lr, r0
+ ldmia r12, {r2-r3}
+ bl long2str
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strb r1, [r0, #-0x1]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E04E4
+ mov r9, #0x30
+_020E045C:
+ cmp r8, #0x40
+ bge _020E04CC
+ ldrb r1, [r12, r8, asr #0x3]
+ and r2, r8, #0x7
+ rsb r3, r2, #0x7
+ mov r2, r1, asr r3
+ sub r10, r8, #0x4
+ bic r1, r8, #0x7
+ bic r10, r10, #0x7
+ cmp r1, r10
+ add r10, r12, r8, asr #0x3
+ and r1, r2, #0xff
+ beq _020E04A0
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E04A0:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E04D0
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E04D0
+_020E04CC:
+ mov r1, r9
+_020E04D0:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strb r1, [r0, #-0x1]!
+ sub r8, r8, #0x4
+ bge _020E045C
+_020E04E4:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r0, #-0x1]!
+ mov r1, #0x31
+ strb r1, [r0, #-0x1]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strb r1, [r0, #-0x2]!
+ mov r1, #0x30
+ strb r1, [r0, #-0x1]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneb r1, [r0, #-0x1]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqb r1, [r0, #-0x1]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqb r1, [r0, #-0x1]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E056C: .word 0x000001FD
+_020E0570: .word 0x02106DA0
+_020E0574: .word 0x02106DA8
+_020E0578: .word 0x02106DB0
+_020E057C: .word 0x02106DB8
+_020E0580: .word 0x02106DBC
+_020E0584: .word 0x02106DC0
+_020E0588: .word 0x02106DC8
+_020E058C: .word 0x02106DD0
+_020E0590: .word 0x02106DD4
+_020E0594: .word 0x000007FF
+
+ arm_func_start round_decimal
+round_decimal: ; 0x020E0598
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E05C0
+_020E05A4:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ strb r1, [r0, #0x4]
+ mov r1, #0x30
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E05C0:
+ ldrb lr, [r0, #0x4]
+ cmp r1, lr
+ ldmgeia sp!, {r4,pc}
+_020E05CC: ; 0x020E05CC
+ add r12, r0, #0x5
+ add r2, r12, r1
+ add r2, r2, #0x1
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x5
+ bne _020E0620
+ add r12, r12, lr
+_020E05F4:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E060C
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E05F4
+_020E060C:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E0628
+_020E0620:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E0628:
+ cmp r1, #0x0
+ beq _020E0684
+ mov r12, #0x0
+ mov lr, #0x1
+_020E0638:
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ add r3, r3, r4
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x9
+ movgt r4, lr
+ movle r4, r12
+ cmp r4, #0x0
+ bne _020E0668
+ cmp r3, #0x0
+ bne _020E0670
+_020E0668:
+ sub r1, r1, #0x1
+ b _020E067C
+_020E0670:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E0684
+_020E067C:
+ cmp r1, #0x0
+ bne _020E0638
+_020E0684:
+ cmp r4, #0x0
+ beq _020E06AC
+ ldrsh r3, [r0, #0x2]
+ mov r2, #0x1
+ mov r1, #0x31
+ add r3, r3, #0x1
+ strh r3, [r0, #0x2]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E06AC:
+ cmp r1, #0x0
+ beq _020E05A4
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start float2str
+float2str: ; 0x020E06BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x2c
+ ldr r7, [sp, #0x68]
+ ldr r3, _020E0DF4 ; =0x000001FD
+ ldrb r6, [sp, #0x61]
+ ldrb r5, [sp, #0x5f]
+ ldrb r4, [sp, #0x5d]
+ cmp r7, r3
+ mov r10, r0
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r12, #0x0
+ mov r11, #0x20
+ add r0, sp, #0x0
+ add r3, sp, #0x4
+ mov r1, r10
+ mov r2, r8
+ strb r12, [sp, #0x0]
+ strh r11, [sp, #0x2]
+ bl __num2dec_internal2
+ ldrb r0, [sp, #0x8]
+ add r1, sp, #0x9
+ add r0, r1, r0
+ b _020E074C
+_020E0734:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E074C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E0764
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E0734
+_020E0764:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E0784
+ cmp r0, #0x49
+ beq _020E0790
+ cmp r0, #0x4e
+ beq _020E08F0
+ b _020E0A44
+_020E0784:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E0A44
+_020E0790:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E0854
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E07BC
+ cmp r6, #0x80
+ blt _020E07C4
+_020E07BC:
+ mov r1, #0x0
+ b _020E07D4
+_020E07C4:
+ ldr r1, _020E0DF8 ; =0x0210430C
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E07D4:
+ cmp r1, #0x0
+ beq _020E0818
+ ldr r3, _020E0DFC ; =0x02106DA8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0818:
+ ldr r3, _020E0E00 ; =0x02106DB0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0854:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E0868
+ cmp r6, #0x80
+ blt _020E0870
+_020E0868:
+ mov r1, #0x0
+ b _020E0880
+_020E0870:
+ ldr r1, _020E0DF8 ; =0x0210430C
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0880:
+ cmp r1, #0x0
+ beq _020E08BC
+ ldr r3, _020E0E04 ; =0x02106DB8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08BC:
+ ldr r3, _020E0E08 ; =0x02106DBC
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08F0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E09A8
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E0910
+ cmp r6, #0x80
+ blt _020E0918
+_020E0910:
+ mov r1, #0x0
+ b _020E0928
+_020E0918:
+ ldr r1, _020E0DF8 ; =0x0210430C
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0928:
+ cmp r1, #0x0
+ beq _020E096C
+ ldr r3, _020E0E0C ; =0x02106DC0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E096C:
+ ldr r3, _020E0E10 ; =0x02106DC8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E09A8:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E09BC
+ cmp r6, #0x80
+ blt _020E09C4
+_020E09BC:
+ mov r1, #0x0
+ b _020E09D4
+_020E09C4:
+ ldr r1, _020E0DF8 ; =0x0210430C
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E09D4:
+ cmp r1, #0x0
+ beq _020E0A10
+ ldr r3, _020E0E14 ; =0x02106DD0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A10:
+ ldr r3, _020E0E18 ; =0x02106DD4
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A44:
+ ldrb r0, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r8, r9, #0x1
+ sub r0, r0, #0x1
+ add r0, r1, r0
+ strh r0, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E0A98
+ bge _020E0B24
+ cmp r6, #0x47
+ bgt _020E0DE0
+ cmp r6, #0x45
+ blt _020E0DE0
+ beq _020E0B24
+ cmp r6, #0x46
+ beq _020E0C6C
+ cmp r6, #0x47
+ beq _020E0AB0
+ b _020E0DE0
+_020E0A98:
+ cmp r6, #0x66
+ bgt _020E0AA8
+ beq _020E0C6C
+ b _020E0DE0
+_020E0AA8:
+ cmp r6, #0x67
+ bne _020E0DE0
+_020E0AB0:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E0AC8
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal
+_020E0AC8:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E0AE0
+ cmp r2, r7
+ blt _020E0B00
+_020E0AE0:
+ cmp r5, #0x0
+ ldreqb r0, [sp, #0x8]
+ subne r7, r7, #0x1
+ subeq r7, r0, #0x1
+ cmp r6, #0x67
+ moveq r6, #0x65
+ movne r6, #0x45
+ b _020E0B24
+_020E0B00:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E0C6C
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E0C6C
+_020E0B24:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E0B3C
+ add r0, sp, #0x4
+ bl round_decimal
+_020E0B3C:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E0E1C ; =0x66666667
+ mov r0, #0xa
+ b _020E0B90
+_020E0B60:
+ mov r1, lr, lsr #0x1f
+ smull r2, r12, r3, lr
+ add r12, r1, r12, asr #0x2
+ smull r1, r2, r0, r12
+ sub r12, lr, r1
+ add r1, r12, #0x30
+ strb r1, [r8, #-0x1]!
+ mov r2, lr
+ smull r1, lr, r3, r2
+ mov r1, r2, lsr #0x1f
+ add lr, r1, lr, asr #0x2
+ add r10, r10, #0x1
+_020E0B90:
+ cmp lr, #0x0
+ bne _020E0B60
+ cmp r10, #0x2
+ blt _020E0B60
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r9, r8
+ ldr r0, _020E0DF4 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldrb r1, [sp, #0x8]
+ add r0, r7, #0x1
+ cmp r1, r0
+ bge _020E0BFC
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E0BFC
+ mov r0, #0x30
+_020E0BF0:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E0BF0
+_020E0BFC:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E0C20
+_020E0C10:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E0C10
+_020E0C20:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r0, #0x2e
+ strneb r0, [r8, #-0x1]!
+ ldrb r0, [sp, #0x9]
+ strb r0, [r8, #-0x1]!
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E0DE0
+_020E0C6C:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E0CAC
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E0CAC:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E0DF4 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ add r3, sp, #0x9
+ sub r6, r7, r1
+ cmp r6, #0x0
+ add r2, r3, r2
+ mov r9, #0x0
+ ble _020E0D00
+ mov r3, #0x30
+_020E0CF0:
+ add r9, r9, #0x1
+ cmp r9, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E0CF0
+_020E0D00:
+ mov r6, #0x0
+ b _020E0D14
+_020E0D08:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E0D14:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E0D08
+ cmp r6, r1
+ bge _020E0D40
+ mov r3, #0x30
+_020E0D30:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E0D30
+_020E0D40:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E0DA8
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E0D88
+ mov r3, #0x30
+_020E0D70:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E0D70
+_020E0D88:
+ cmp r5, r0
+ bge _020E0DB0
+_020E0D90:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E0D90
+ b _020E0DB0
+_020E0DA8:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E0DB0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E0DE0:
+ mov r0, r8
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E0DF4: .word 0x000001FD
+_020E0DF8: .word 0x0210430C
+_020E0DFC: .word 0x02106DA8
+_020E0E00: .word 0x02106DB0
+_020E0E04: .word 0x02106DB8
+_020E0E08: .word 0x02106DBC
+_020E0E0C: .word 0x02106DC0
+_020E0E10: .word 0x02106DC8
+_020E0E14: .word 0x02106DD0
+_020E0E18: .word 0x02106DD4
+_020E0E1C: .word 0x66666667
+
+arm_func_start __pformatter
+__pformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r3, #0x20
+ mov r11, r2
+ strb r3, [sp, #0x19]
+ ldrsb r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r10, #0x0
+ beq _020E1628
+_020E0E50:
+ mov r0, r11
+ mov r1, #0x25
+ bl strchr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E0EA4
+ mov r0, r11
+ bl strlen
+ movs r2, r0
+ add r10, r10, r2
+ beq _020E1628
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E1628
+ add sp, sp, #0x22c
+ mvn r0, #0x0
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0EA4:
+ subs r2, r0, r11
+ add r10, r10, r2
+ beq _020E0ED4
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E0ED4:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x25c
+ add r2, sp, #0x1c
+ bl parse_format_printf
+ ldrb r1, [sp, #0x21]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E0F40
+ bge _020E12A4
+ cmp r1, #0x47
+ bgt _020E0F34
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F28
+_020E0F0C: ; 0x020E0F0C
+ b _020E12A4
+_020E0F10: ; 0x020E0F10
+ b _020E148C
+_020E0F14: ; 0x020E0F14
+ b _020E148C
+_020E0F18: ; 0x020E0F18
+ b _020E148C
+_020E0F1C: ; 0x020E0F1C
+ b _020E123C
+_020E0F20: ; 0x020E0F20
+ b _020E123C
+_020E0F24: ; 0x020E0F24
+ b _020E123C
+_020E0F28:
+ cmp r1, #0x25
+ beq _020E1478
+ b _020E148C
+_020E0F34:
+ cmp r1, #0x58
+ beq _020E1100
+ b _020E148C
+_020E0F40:
+ cmp r1, #0x75
+ bgt _020E0FA8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F9C
+_020E0F54: ; 0x020E0F54
+ b _020E0FC0
+_020E0F58: ; 0x020E0F58
+ b _020E123C
+_020E0F5C: ; 0x020E0F5C
+ b _020E123C
+_020E0F60: ; 0x020E0F60
+ b _020E123C
+_020E0F64: ; 0x020E0F64
+ b _020E148C
+_020E0F68: ; 0x020E0F68
+ b _020E0FC0
+_020E0F6C: ; 0x020E0F6C
+ b _020E148C
+_020E0F70: ; 0x020E0F70
+ b _020E148C
+_020E0F74: ; 0x020E0F74
+ b _020E148C
+_020E0F78: ; 0x020E0F78
+ b _020E148C
+_020E0F7C: ; 0x020E0F7C
+ b _020E13CC
+_020E0F80: ; 0x020E0F80
+ b _020E1100
+_020E0F84: ; 0x020E0F84
+ b _020E148C
+_020E0F88: ; 0x020E0F88
+ b _020E148C
+_020E0F8C: ; 0x020E0F8C
+ b _020E148C
+_020E0F90: ; 0x020E0F90
+ b _020E130C
+_020E0F94: ; 0x020E0F94
+ b _020E148C
+_020E0F98: ; 0x020E0F98
+ b _020E1100
+_020E0F9C:
+ cmp r1, #0x63
+ beq _020E1458
+ b _020E148C
+_020E0FA8:
+ cmp r1, #0x78
+ bgt _020E0FB8
+ beq _020E1100
+ b _020E148C
+_020E0FB8:
+ cmp r1, #0xff
+ b _020E148C
+_020E0FC0:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E0FE0
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E0FE0:
+ cmp r0, #0x4
+ bne _020E1008
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1008:
+ cmp r0, #0x6
+ bne _020E1030
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1030:
+ cmp r0, #0x7
+ bne _020E104C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E104C:
+ cmp r0, #0x8
+ bne _020E1068
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E1068:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E1078:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, asr #0x10
+ cmp r0, #0x1
+ moveq r1, r5, lsl #0x18
+ moveq r5, r1, asr #0x18
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E10CC
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E10F0
+_020E10CC:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E10F0:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E1100:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E1120
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E1120:
+ cmp r0, #0x4
+ bne _020E1148
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1148:
+ cmp r0, #0x6
+ bne _020E1170
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1170:
+ cmp r0, #0x7
+ bne _020E118C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E118C:
+ cmp r0, #0x8
+ bne _020E11A8
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E11A8:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E11B8:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, lsr #0x10
+ cmp r0, #0x1
+ andeq r5, r5, #0xff
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E1208
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E122C
+_020E1208:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E122C:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E123C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E1260
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E1260:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl float2str
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E12A4:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E12C8
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E12C8:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl double2hex
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E130C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x5
+ bne _020E134C
+ ldr r0, [sp, #0x25c]
+ mov r2, #0x200
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r1, [r0, #-0x4]
+ add r0, sp, #0x2c
+ cmp r1, #0x0
+ ldreq r1, _020E163C ; =0x02106DD8
+ bl wcstombs
+_020E133C: ; 0x020E133C
+ cmp r0, #0x0
+ blt _020E148C
+ add r7, sp, #0x2c
+ b _020E135C
+_020E134C:
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r7, [r0, #-0x4]
+_020E135C:
+ ldrb r0, [sp, #0x1f]
+ cmp r7, #0x0
+ ldreq r7, _020E1640 ; =0x02106DDC
+ cmp r0, #0x0
+ beq _020E1390
+ ldrb r0, [sp, #0x1e]
+ ldrb r6, [r7], #0x1
+ cmp r0, #0x0
+ beq _020E14D8
+ ldr r0, [sp, #0x28]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E14D8
+_020E1390:
+ ldrb r0, [sp, #0x1e]
+ cmp r0, #0x0
+ beq _020E13BC
+ ldr r6, [sp, #0x28]
+ mov r0, r7
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+_020E13B0: ; 0x020E13B0
+ cmp r0, #0x0
+ subne r6, r0, r7
+ b _020E14D8
+_020E13BC:
+ mov r0, r7
+ bl strlen
+ mov r6, r0
+ b _020E14D8
+_020E13CC:
+ ldr r1, [sp, #0x25c]
+ ldrb r0, [sp, #0x20]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r1, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E161C
+_020E13EC:
+ b _020E1410
+_020E13F0:
+ b _020E161C
+_020E13F4:
+ b _020E1418
+_020E13F8:
+ b _020E1420
+_020E13FC:
+ b _020E1448
+_020E1400:
+ b _020E161C
+_020E1404:
+ b _020E1428
+_020E1408:
+ b _020E1438
+_020E140C:
+ b _020E1440
+_020E1410:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1418:
+ strh r10, [r1, #0x0]
+ b _020E161C
+_020E1420:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1428:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1438:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1440:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1448:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1458:
+ ldr r0, [sp, #0x25c]
+ add r7, sp, #0x2c
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r0, [r0, #-0x4]
+ mov r6, #0x1
+ strb r0, [sp, #0x2c]
+ b _020E14D8
+_020E1478:
+ mov r0, #0x25
+ strb r0, [sp, #0x2c]
+ add r7, sp, #0x2c
+ mov r6, #0x1
+ b _020E14D8
+_020E148C:
+ ldr r0, [sp, #0xc]
+ bl strlen
+ movs r4, r0
+ beq _020E14C4
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r4
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E14C4:
+ add sp, sp, #0x22c
+ add r0, r10, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E14D8:
+ ldrb r0, [sp, #0x1c]
+ mov r4, r6
+ cmp r0, #0x0
+ beq _020E158C
+ cmp r0, #0x2
+ moveq r0, #0x30
+ movne r0, #0x20
+ strb r0, [sp, #0x19]
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E1548
+ ldrsb r0, [sp, #0x19]
+ cmp r0, #0x30
+ bne _020E1548
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r7, r7, #0x1
+ sub r6, r6, #0x1
+_020E1548:
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E158C
+_020E1554:
+ mov r0, r8
+ add r1, sp, #0x19
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E1554
+_020E158C:
+ cmp r6, #0x0
+ beq _020E15BC
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E15BC:
+ ldrb r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _020E1618
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E1618
+ mov r6, #0x20
+ add r7, sp, #0x18
+_020E15DC:
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ strb r6, [sp, #0x18]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E15DC
+_020E1618:
+ add r10, r10, r4
+_020E161C:
+ ldrsb r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E0E50
+_020E1628:
+ mov r0, r10
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E163C: .word 0x02106DD8
+_020E1640: .word 0x02106DDC
+
+ arm_func_start __FileWrite
+__FileWrite: ; 0x020E1644
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ mov r0, r1
+ mov r3, r5
+ mov r1, #0x1
+ mov r4, r2
+ bl __fwrite
+_020E1660: ; 0x020E1660
+ cmp r4, r0
+ movne r5, #0x0
+ mov r0, r5
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start __StringWrite
+__StringWrite: ; 0x020E1670
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ mov r5, r2
+ ldr r2, [r4, #0x4]
+ add r0, r3, r5
+ cmp r0, r2
+ ldr r0, [r4, #0x0]
+ subhi r5, r2, r3
+ mov r2, r5
+ add r0, r0, r3
+ bl memcpy
+ ldr r1, [r4, #0x8]
+ mov r0, #0x1
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start printf
+printf: ; 0x020E16B4
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, _020E17B4 ; =0x02106AA4
+ mvn r1, #0x0
+ bl fwide
+_020E16C8: ; 0x020E16C8
+ cmp r0, #0x0
+ mvnge r0, #0x0
+ ldmgeia sp!, {r4,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r0, _020E17B8 ; =0x021D7118
+ bl OS_TryLockMutex
+_020E16E4: ; 0x020E16E4
+ cmp r0, #0x0
+ bne _020E1710
+ ldr r0, _020E17BC ; =0x021D3498
+ ldr r1, _020E17C0 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+ b _020E1768
+_020E1710:
+ ldr r0, _020E17BC ; =0x021D3498
+ ldr r1, _020E17C0 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0xc]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E1740
+ ldr r0, _020E17C4 ; =0x021D70AC
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x1
+ str r1, [r0, #0xc]
+ b _020E1768
+_020E1740:
+ ldr r0, _020E17B8 ; =0x021D7118
+ bl OS_LockMutex
+ ldr r0, _020E17BC ; =0x021D3498
+ ldr r1, _020E17C0 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+_020E1768:
+ add r0, sp, #0x8
+ bic r3, r0, #0x3
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E17C8 ; =__FileWrite
+ ldr r1, _020E17B4 ; =0x02106AA4
+ add r3, r3, #0x4
+ bl __pformatter
+ ldr r1, _020E17C4 ; =0x021D70AC
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ subs r0, r0, #0x1
+ str r0, [r1, #0xc]
+ bne _020E17A4
+ ldr r0, _020E17B8 ; =0x021D7118
+ bl OS_UnlockMutex
+_020E17A4:
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E17B4: .word 0x02106AA4
+_020E17B8: .word 0x021D7118
+_020E17BC: .word 0x021D3498
+_020E17C0: .word 0x021D7088
+_020E17C4: .word 0x021D70AC
+_020E17C8: .word __FileWrite
+
+ arm_func_start vsnprintf
+vsnprintf: ; 0x020E17CC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E1830 ; =__StringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __pformatter
+_020E17F8: ; 0x020E17F8
+ cmp r5, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r5,pc}
+_020E1804: ; 0x020E1804
+ cmp r0, r4
+ movcc r1, #0x0
+ addcc sp, sp, #0xc
+ strccb r1, [r5, r0]
+ ldmccia sp!, {r4-r5,pc}
+_020E1818: ; 0x020E1818
+ cmp r4, #0x0
+ addne r1, r5, r4
+ movne r2, #0x0
+ strneb r2, [r1, #-0x1]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E1830: .word __StringWrite
+
+ arm_func_start snprintf
+snprintf: ; 0x020E1834
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start sprintf
+sprintf: ; 0x020E185C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r1, sp, #0xc
+ bic r1, r1, #0x3
+ add r3, r1, #0x4
+ ldr r2, [sp, #0xc]
+ mvn r1, #0x0
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start qsort
+qsort: ; 0x020E1888
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ mov r9, r1
+ cmp r9, #0x2
+ mov r10, r0
+ mov r8, r2
+ mov r7, r3
+ addcc sp, sp, #0x10
+ ldmccia sp!, {r3-r11,pc}
+_020E18AC: ; 0x020E18AC
+ mov r0, r9, lsr #0x1
+ add r11, r0, #0x1
+ sub r0, r11, #0x1
+ mla r0, r8, r0, r10
+ sub r2, r9, #0x1
+ str r0, [sp, #0xc]
+ mla r0, r8, r2, r10
+ str r0, [sp, #0x8]
+ mul r0, r11, r8
+ mvn r1, #0x0
+ str r0, [sp, #0x4]
+ mul r0, r8, r1
+ str r0, [sp, #0x0]
+_020E18E0:
+ cmp r11, #0x1
+ bls _020E1908
+ ldr r0, [sp, #0x4]
+ sub r11, r11, #0x1
+ sub r0, r0, r8
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ sub r0, r0, r8
+ str r0, [sp, #0xc]
+ b _020E1950
+_020E1908:
+ mov r2, r8
+ ldr r4, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ cmp r8, #0x0
+ beq _020E1934
+_020E191C:
+ ldrsb r0, [r4, #0x0]
+ ldrsb r1, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r3], #0x1
+ strb r1, [r4], #0x1
+ bne _020E191C
+_020E1934:
+ sub r9, r9, #0x1
+ cmp r9, #0x1
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r3-r11,pc}
+_020E1944: ; 0x020E1944
+ ldr r0, [sp, #0x8]
+ sub r0, r0, r8
+ str r0, [sp, #0x8]
+_020E1950:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r4, r11
+ add r0, r1, r0
+ cmp r9, r11, lsl #0x1
+ add r5, r10, r0
+ blo _020E18E0
+_020E196C:
+ mov r4, r4, lsl #0x1
+ sub r0, r4, #0x1
+ mov r6, r5
+ mla r5, r8, r0, r10
+ cmp r9, r4
+ bls _020E199C
+ mov r0, r5
+ add r1, r5, r8
+ blx r7
+ cmp r0, #0x0
+ addlt r4, r4, #0x1
+ addlt r5, r5, r8
+_020E199C:
+ mov r0, r6
+ mov r1, r5
+ blx r7
+ cmp r0, #0x0
+ bge _020E18E0
+ mov r2, r8
+ mov r3, r5
+ cmp r8, #0x0
+ beq _020E19D8
+_020E19C0:
+ ldrsb r1, [r6, #0x0]
+ ldrsb r0, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r6], #0x1
+ strb r1, [r3], #0x1
+ bne _020E19C0
+_020E19D8:
+ cmp r9, r4, lsl #0x1
+ bhs _020E196C
+ b _020E18E0
+_020E19E4: ; 0x020E19E4
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,pc}
+
+ arm_func_start rand
+rand: ; 0x020E19EC
+ ldr r2, _020E1A14 ; =0x02106DE0
+ ldr r0, _020E1A18 ; =0x41C64E6D
+ ldr r3, [r2, #0x0]
+ ldr r1, _020E1A1C ; =0x00007FFF
+ mul r0, r3, r0
+ add r0, r0, #0x39
+ add r0, r0, #0x3000
+ str r0, [r2, #0x0]
+ and r0, r1, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020E1A14: .word 0x02106DE0
+_020E1A18: .word 0x41C64E6D
+_020E1A1C: .word 0x00007FFF
+
+ arm_func_start srand
+srand: ; 0x020E1A20
+ ldr r1, _020E1A2C ; =0x02106DE0
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020E1A2C: .word 0x02106DE0
+
+ arm_func_start parse_format_scanf
+parse_format_scanf: ; 0x020E1A30
+ stmdb sp!, {r3-r7,lr}
+ sub sp, sp, #0x28
+ ldr r6, _020E1F20 ; =0x0210440C
+ add r5, sp, #0x0
+ mov r7, r0
+ mov lr, r1
+ mov r4, r5
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6, {r0-r1}
+ stmia r5, {r0-r1}
+ ldrsb r0, [r7, #0x1]
+ add r12, r7, #0x1
+ cmp r0, #0x25
+ bne _020E1A9C
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1A9C:
+ cmp r0, #0x2a
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ ldreqsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1ABC
+ cmp r0, #0x80
+ blt _020E1AC4
+_020E1ABC:
+ mov r1, #0x0
+ b _020E1AD4
+_020E1AC4:
+ ldr r1, _020E1F24 ; =0x0210430C
+ mov r2, r0, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x8
+_020E1AD4:
+ cmp r1, #0x0
+ beq _020E1B74
+ mov r1, #0x0
+ ldr r3, _020E1F24 ; =0x0210430C
+ str r1, [sp, #0x4]
+ mov r4, r1
+ mov r1, #0xa
+_020E1AF0:
+ ldr r2, [sp, #0x4]
+ sub r0, r0, #0x30
+ mla r0, r2, r1, r0
+ str r0, [sp, #0x4]
+ ldrsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1B14
+ cmp r0, #0x80
+ blt _020E1B1C
+_020E1B14:
+ mov r2, r4
+ b _020E1B28
+_020E1B1C:
+ mov r2, r0, lsl #0x1
+ ldrh r2, [r3, r2]
+ and r2, r2, #0x8
+_020E1B28:
+ cmp r2, #0x0
+ bne _020E1AF0
+ ldr r1, [sp, #0x4]
+ cmp r1, #0x0
+ bne _020E1B6C
+ mov r0, #0xff
+ add r4, sp, #0x0
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1B6C:
+ mov r1, #0x1
+ strb r1, [sp, #0x1]
+_020E1B74:
+ cmp r0, #0x6c
+ mov r1, #0x1
+ bgt _020E1BAC
+ cmp r0, #0x68
+ blt _020E1BA0
+ beq _020E1BC8
+ cmp r0, #0x6a
+ beq _020E1C14
+ cmp r0, #0x6c
+ beq _020E1BE4
+ b _020E1C38
+_020E1BA0:
+ cmp r0, #0x4c
+ beq _020E1C08
+ b _020E1C38
+_020E1BAC:
+ cmp r0, #0x74
+ bgt _020E1BBC
+ beq _020E1C2C
+ b _020E1C38
+_020E1BBC:
+ cmp r0, #0x7a
+ beq _020E1C20
+ b _020E1C38
+_020E1BC8:
+ mov r2, #0x2
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x68
+ streqb r1, [sp, #0x2]
+ ldreqsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1BE4:
+ mov r2, #0x3
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x6c
+ bne _020E1C3C
+ mov r0, #0x7
+ strb r0, [sp, #0x2]
+ ldrsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1C08:
+ mov r2, #0x9
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C14:
+ mov r2, #0x4
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C20:
+ mov r2, #0x5
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C2C:
+ mov r2, #0x6
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C38:
+ mov r1, #0x0
+_020E1C3C:
+ cmp r1, #0x0
+ ldrnesb r0, [r12, #0x1]!
+ strb r0, [sp, #0x3]
+ cmp r0, #0x5b
+ bgt _020E1C90
+ bge _020E1DE0
+ cmp r0, #0x47
+ bgt _020E1C84
+ subs r1, r0, #0x41
+ addpl pc, pc, r1, lsl #0x2
+ b _020E1EF0
+_020E1C68: ; 0x020E1C68
+ b _020E1D1C
+_020E1C6C: ; 0x020E1C6C
+ b _020E1EF0
+_020E1C70: ; 0x020E1C70
+ b _020E1EF0
+_020E1C74: ; 0x020E1C74
+ b _020E1EF0
+_020E1C78: ; 0x020E1C78
+ b _020E1D1C
+_020E1C7C: ; 0x020E1C7C
+ b _020E1D1C
+_020E1C80: ; 0x020E1C80
+ b _020E1D1C
+_020E1C84:
+ cmp r0, #0x58
+ beq _020E1D08
+ b _020E1EF0
+_020E1C90:
+ cmp r0, #0x61
+ bgt _020E1CA0
+ beq _020E1D1C
+ b _020E1EF0
+_020E1CA0:
+ sub r0, r0, #0x63
+ cmp r0, #0x15
+ addls pc, pc, r0, lsl #0x2
+ b _020E1EF0
+_020E1CB0:
+ b _020E1D6C
+_020E1CB4:
+ b _020E1D08
+_020E1CB8:
+ b _020E1D1C
+_020E1CBC:
+ b _020E1D1C
+_020E1CC0:
+ b _020E1D1C
+_020E1CC4:
+ b _020E1EF0
+_020E1CC8:
+ b _020E1D08
+_020E1CCC:
+ b _020E1EF0
+_020E1CD0:
+ b _020E1EF0
+_020E1CD4:
+ b _020E1EF0
+_020E1CD8:
+ b _020E1EF0
+_020E1CDC:
+ b _020E1EF8
+_020E1CE0:
+ b _020E1D08
+_020E1CE4:
+ b _020E1D58
+_020E1CE8:
+ b _020E1EF0
+_020E1CEC:
+ b _020E1EF0
+_020E1CF0:
+ b _020E1D90
+_020E1CF4:
+ b _020E1EF0
+_020E1CF8:
+ b _020E1D08
+_020E1CFC:
+ b _020E1EF0
+_020E1D00:
+ b _020E1EF0
+_020E1D04:
+ b _020E1D08
+_020E1D08:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D1C:
+ ldrb r1, [sp, #0x2]
+ cmp r1, #0x1
+ cmpne r1, #0x2
+ beq _020E1D3C
+ add r0, r1, #0xfc
+ and r0, r0, #0xff
+ cmp r0, #0x3
+ bhi _020E1D48
+_020E1D3C:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D48:
+ cmp r1, #0x3
+ moveq r0, #0x8
+ streqb r0, [sp, #0x2]
+ b _020E1EF8
+_020E1D58:
+ mov r1, #0x3
+ mov r0, #0x78
+ strb r1, [sp, #0x2]
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D6C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1EF8
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D90:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1DB0
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1DB0:
+ add r2, sp, #0x8
+ mov r1, #0x20
+ mov r0, #0xff
+_020E1DBC:
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ strb r0, [r2], #0x1
+ bgt _020E1DBC
+ mov r1, #0xc1
+ mov r0, #0xfe
+ strb r1, [sp, #0x9]
+ strb r0, [sp, #0xc]
+ b _020E1EF8
+_020E1DE0:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1E00
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1E00:
+ ldrsb r2, [r12, #0x1]!
+ mov r1, #0x0
+ cmp r2, #0x5e
+ ldreqsb r2, [r12, #0x1]!
+ moveq r1, #0x1
+ cmp r2, #0x5d
+ bne _020E1EA8
+ ldrb r0, [sp, #0x13]
+ orr r0, r0, #0x20
+ strb r0, [sp, #0x13]
+ ldrsb r2, [r12, #0x1]!
+ b _020E1EA8
+_020E1E30:
+ add r0, sp, #0x0
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ mov r4, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ ldrsb r3, [r12, #0x1]
+ cmp r3, #0x2d
+ bne _020E1EA4
+ ldrsb r7, [r12, #0x2]
+ cmp r7, #0x0
+ cmpne r7, #0x5d
+ beq _020E1EA4
+ add r2, r2, #0x1
+ cmp r2, r7
+ bgt _020E1E9C
+_020E1E78:
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ add r2, r2, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ cmp r2, r7
+ ble _020E1E78
+_020E1E9C:
+ ldrsb r2, [r12, #0x3]!
+ b _020E1EA8
+_020E1EA4:
+ ldrsb r2, [r12, #0x1]!
+_020E1EA8:
+ cmp r2, #0x0
+ cmpne r2, #0x5d
+ bne _020E1E30
+ cmp r2, #0x0
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ beq _020E1EF8
+ cmp r1, #0x0
+ beq _020E1EF8
+ add r2, sp, #0x8
+ mov r1, #0x20
+_020E1ED4:
+ ldrb r0, [r2, #0x0]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ mvn r0, r0
+ strb r0, [r2], #0x1
+ bgt _020E1ED4
+ b _020E1EF8
+_020E1EF0:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+_020E1EF8:
+ add r4, sp, #0x0
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add r0, r12, #0x1
+ add sp, sp, #0x28
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020E1F20: .word 0x0210440C
+_020E1F24: .word 0x0210430C
+
+ arm_func_start __sformatter
+__sformatter: ; 0x020E1F28
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x88
+ ldrsb r5, [r2, #0x0]
+ str r2, [sp, #0xc]
+ mov r2, #0x0
+ mov r9, r0
+ mov r0, r2
+ str r2, [sp, #0x20]
+ mov r8, r1
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x24]
+ cmp r5, #0x0
+ ldr r10, [sp, #0xb0]
+ str r0, [sp, #0x30]
+ mov r4, r2
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x40]
+ beq _020E2C3C
+_020E1F70:
+ cmp r5, #0x0
+ mov r0, #0x1
+ blt _020E1F84
+ cmp r5, #0x80
+ movlt r0, #0x0
+_020E1F84:
+ cmp r0, #0x0
+ movne r0, #0x0
+ bne _020E1FA0
+ mov r1, r5, lsl #0x1
+ ldr r0, _020E2C74 ; =0x0210430C
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E1FA0:
+ cmp r0, #0x0
+ beq _020E2060
+ mov r2, #0x0
+ ldr r1, _020E2C74 ; =0x0210430C
+ mov r12, r2
+ mov r3, #0x1
+_020E1FB8:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x1]!
+ str r0, [sp, #0xc]
+ mov r0, r3
+ cmp r5, #0x0
+ blt _020E1FD8
+ cmp r5, #0x80
+ movlt r0, r2
+_020E1FD8:
+ cmp r0, #0x0
+ movne r0, r12
+ moveq r0, r5, lsl #0x1
+ ldreqh r0, [r1, r0]
+ andeq r0, r0, #0x100
+ cmp r0, #0x0
+ bne _020E1FB8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =0x0210430C
+ b _020E200C
+_020E2008:
+ add r4, r4, #0x1
+_020E200C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2034
+ cmp r1, #0x80
+ blt _020E203C
+_020E2034:
+ mov r0, #0x0
+ b _020E2048
+_020E203C:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E2048:
+ cmp r0, #0x0
+ bne _020E2008
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2060:
+ cmp r5, #0x25
+ beq _020E20D8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E20D8
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ and r0, r5, #0xff
+ ldrsb r1, [sp, #0x50]
+ cmp r0, r1
+ beq _020E20C4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20C4:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20D8:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x60
+ bl parse_format_scanf
+ str r0, [sp, #0xc]
+ ldrb r0, [sp, #0x60]
+ cmp r0, #0x0
+ bne _020E2114
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x25
+ beq _020E2114
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r5, [r0, #-0x4]
+ b _020E2118
+_020E2114:
+ mov r5, #0x0
+_020E2118:
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x6e
+ beq _020E2158
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2158
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2158
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+_020E2158:
+ ldrb r1, [sp, #0x63]
+ cmp r1, #0x5b
+ bgt _020E21B0
+ bge _020E2984
+ cmp r1, #0x47
+ bgt _020E21A4
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E2198
+_020E217C: ; 0x020E217C
+ b _020E2600
+_020E2180: ; 0x020E2180
+ b _020E2C3C
+_020E2184: ; 0x020E2184
+ b _020E2C3C
+_020E2188: ; 0x020E2188
+ b _020E2C3C
+_020E218C: ; 0x020E218C
+ b _020E2600
+_020E2190: ; 0x020E2190
+ b _020E2600
+_020E2194: ; 0x020E2194
+ b _020E2600
+_020E2198:
+ cmp r1, #0x25
+ beq _020E287C
+ b _020E2C3C
+_020E21A4:
+ cmp r1, #0x58
+ beq _020E243C
+ b _020E2C3C
+_020E21B0:
+ cmp r1, #0x78
+ bgt _020E2228
+ subs r0, r1, #0x63
+ addpl pc, pc, r0, lsl #0x2
+ b _020E221C
+_020E21C4: ; 0x020E21C4
+ b _020E26C4
+_020E21C8: ; 0x020E21C8
+ b _020E2230
+_020E21CC: ; 0x020E21CC
+ b _020E2600
+_020E21D0: ; 0x020E21D0
+ b _020E2600
+_020E21D4: ; 0x020E21D4
+ b _020E2600
+_020E21D8: ; 0x020E21D8
+ b _020E2C3C
+_020E21DC: ; 0x020E21DC
+ b _020E2238
+_020E21E0: ; 0x020E21E0
+ b _020E2C3C
+_020E21E4: ; 0x020E21E4
+ b _020E2C3C
+_020E21E8: ; 0x020E21E8
+ b _020E2C3C
+_020E21EC: ; 0x020E21EC
+ b _020E2C3C
+_020E21F0: ; 0x020E21F0
+ b _020E2BC8
+_020E21F4: ; 0x020E21F4
+ b _020E242C
+_020E21F8: ; 0x020E21F8
+ b _020E2C3C
+_020E21FC: ; 0x020E21FC
+ b _020E2C3C
+_020E2200: ; 0x020E2200
+ b _020E2C3C
+_020E2204: ; 0x020E2204
+ b _020E2908
+_020E2208: ; 0x020E2208
+ b _020E2C3C
+_020E220C: ; 0x020E220C
+ b _020E2434
+_020E2210: ; 0x020E2210
+ b _020E2C3C
+_020E2214: ; 0x020E2214
+ b _020E2C3C
+_020E2218: ; 0x020E2218
+ b _020E243C
+_020E221C:
+ cmp r1, #0x61
+ beq _020E2600
+ b _020E2C3C
+_020E2228:
+ cmp r1, #0xff
+ b _020E2C3C
+_020E2230:
+ mov r0, #0xa
+ b _020E223C
+_020E2238:
+ mov r0, #0x0
+_020E223C:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E225C
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E225C:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E22A0
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E22C4
+_020E22A0:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E22C4:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E22F4
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E22F4:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ cmpne r0, #0x4
+ bne _020E2344
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2330
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2330:
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2344:
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x3c]
+ streq r0, [sp, #0x1c]
+ beq _020E2364
+ ldr r0, [sp, #0x3c]
+ rsb r0, r0, #0x0
+ str r0, [sp, #0x1c]
+_020E2364:
+ cmp r5, #0x0
+ beq _020E241C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2408
+_020E237C:
+ b _020E239C
+_020E2380:
+ b _020E23A8
+_020E2384:
+ b _020E23B4
+_020E2388:
+ b _020E23C0
+_020E238C:
+ b _020E23CC
+_020E2390:
+ b _020E23E0
+_020E2394:
+ b _020E23EC
+_020E2398:
+ b _020E23F8
+_020E239C:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23A8:
+ ldr r0, [sp, #0x1c]
+ strb r0, [r5, #0x0]
+ b _020E2408
+_020E23B4:
+ ldr r0, [sp, #0x1c]
+ strh r0, [r5, #0x0]
+ b _020E2408
+_020E23C0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23CC:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+ b _020E2408
+_020E23E0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23EC:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23F8:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+_020E2408:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E241C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E242C:
+ mov r0, #0x8
+ b _020E2440
+_020E2434:
+ mov r0, #0xa
+ b _020E2440
+_020E243C:
+ mov r0, #0x10
+_020E2440:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E2460
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E2460:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E24A4
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E24C8
+_020E24A4:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E24C8:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E24F8
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E24F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2538
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ ldrne r0, [sp, #0x3c]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x3c]
+ bne _020E2538
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x18]
+_020E2538:
+ cmp r5, #0x0
+ beq _020E25F0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E25DC
+_020E2550:
+ b _020E2570
+_020E2554:
+ b _020E257C
+_020E2558:
+ b _020E2588
+_020E255C:
+ b _020E2594
+_020E2560:
+ b _020E25A0
+_020E2564:
+ b _020E25B4
+_020E2568:
+ b _020E25C0
+_020E256C:
+ b _020E25CC
+_020E2570:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E257C:
+ ldr r0, [sp, #0x3c]
+ strb r0, [r5, #0x0]
+ b _020E25DC
+_020E2588:
+ ldr r0, [sp, #0x3c]
+ strh r0, [r5, #0x0]
+ b _020E25DC
+_020E2594:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25A0:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+ b _020E25DC
+_020E25B4:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25C0:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25CC:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+_020E25DC:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E25F0:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2600:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _020E261C
+ ldr r0, _020E2C78 ; =0x02106B78
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ b _020E2668
+_020E261C:
+ add r0, sp, #0x54
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x64]
+ mov r1, r9
+ mov r2, r8
+ add r3, sp, #0x5c
+ bl __strtold
+ ldr r2, [sp, #0x5c]
+ cmp r2, #0x0
+ bne _020E2664
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, _020E2C78 ; =0x02106B78
+ ldr r0, [r0, #0x0]
+ bl _f2d
+_020E2660: ; 0x020E2660
+ b _020E2668
+_020E2664:
+ add r4, r4, r2
+_020E2668:
+ cmp r5, #0x0
+ beq _020E26B4
+ ldrb r2, [sp, #0x62]
+ cmp r2, #0x0
+ beq _020E2690
+ cmp r2, #0x8
+ beq _020E269C
+ cmp r2, #0x9
+ stmeqia r5, {r0-r1}
+ b _020E26A0
+_020E2690:
+ bl _d2f
+_020E2694: ; 0x020E2694
+ str r0, [r5, #0x0]
+ b _020E26A0
+_020E269C:
+ stmia r5, {r0-r1}
+_020E26A0:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E26B4:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E26C4:
+ ldrb r0, [sp, #0x61]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0x64]
+ cmp r5, #0x0
+ beq _020E280C
+ cmp r10, #0x0
+ beq _020E26F8
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ ldr r11, [r0, #-0x4]
+ str r0, [sp, #0x10]
+_020E26F8:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E2718
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E2718:
+ mvn r0, #0x0
+ str r5, [sp, #0x2c]
+ str r0, [sp, #0x48]
+ b _020E2760
+_020E2728:
+ ldrb r0, [sp, #0x62]
+ strb r6, [sp, #0x50]
+ cmp r0, #0xa
+ ldrnesb r0, [sp, #0x50]
+ strneb r0, [r5], #0x1
+ bne _020E2754
+ mov r0, r5
+ add r1, sp, #0x50
+ mov r2, #0x1
+ bl mbtowc
+ add r5, r5, #0x1
+_020E2754:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2760:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E27B0
+ cmp r10, #0x0
+ beq _020E2790
+ cmp r11, r1
+ movhi r7, #0x1
+ movls r7, #0x0
+ cmp r7, #0x0
+ beq _020E27B0
+_020E2790:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x48]
+ cmp r6, r0
+ bne _020E2728
+_020E27B0:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E27D0
+ cmp r10, #0x0
+ beq _020E27F8
+ cmp r7, #0x0
+ bne _020E27F8
+_020E27D0:
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x2c]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E27F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E286C
+_020E280C:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E282C
+_020E281C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E282C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E285C
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E281C
+_020E285C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2C3C
+_020E286C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E287C:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =0x0210430C
+ b _020E2894
+_020E2890:
+ add r4, r4, #0x1
+_020E2894:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E28BC
+ cmp r1, #0x80
+ blt _020E28C4
+_020E28BC:
+ mov r0, #0x0
+ b _020E28D0
+_020E28C4:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E28D0:
+ cmp r0, #0x0
+ bne _020E2890
+ cmp r1, #0x25
+ beq _020E2900
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ b _020E2C2C
+_020E2900:
+ add r4, r4, #0x1
+ b _020E2C2C
+_020E2908:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2984
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ b _020E2944
+_020E292C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ strb r0, [sp, #0x50]
+_020E2944:
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2958
+ cmp r1, #0x80
+ blt _020E2960
+_020E2958:
+ mov r0, #0x0
+ b _020E2970
+_020E2960:
+ ldr r0, _020E2C74 ; =0x0210430C
+ mov r2, r1, lsl #0x1
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E2970:
+ cmp r0, #0x0
+ bne _020E292C
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+_020E2984:
+ cmp r5, #0x0
+ beq _020E2B00
+ cmp r10, #0x0
+ beq _020E29AC
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #-0x4]
+ sub r11, r0, #0x1
+_020E29AC:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E29CC
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E29CC:
+ mvn r0, #0x0
+ str r5, [sp, #0x28]
+ str r0, [sp, #0x4c]
+ b _020E2A30
+_020E29DC:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ add r2, sp, #0x60
+ and r3, r1, #0xff
+ add r2, r2, r3, asr #0x3
+ ldrb r3, [r2, #0x8]
+ and r0, r1, #0x7
+ mov r2, #0x1
+ tst r3, r2, lsl r0
+ beq _020E2A80
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ strneb r1, [r5], #0x1
+ bne _020E2A24
+ mov r0, r5
+ add r1, sp, #0x50
+ bl mbtowc
+ add r5, r5, #0x2
+_020E2A24:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2A30:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2A80
+ cmp r10, #0x0
+ beq _020E2A60
+ cmp r11, r1
+ movcs r7, #0x1
+ movcc r7, #0x0
+ cmp r7, #0x0
+ beq _020E2A80
+_020E2A60:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x4c]
+ cmp r6, r0
+ bne _020E29DC
+_020E2A80:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2AA0
+ cmp r10, #0x0
+ beq _020E2AD8
+ cmp r7, #0x0
+ bne _020E2AD8
+_020E2AA0:
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x28]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E2AD8:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ mov r0, #0x0
+ streqh r0, [r5, #0x0]
+ strneb r0, [r5, #0x0]
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E2B9C
+_020E2B00:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E2B44
+_020E2B10:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ and r0, r1, #0x7
+ and r2, r1, #0xff
+ add r1, sp, #0x60
+ add r1, r1, r2, asr #0x3
+ ldrb r2, [r1, #0x8]
+ mov r1, #0x1
+ tst r2, r1, lsl r0
+ beq _020E2B74
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E2B44:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2B74
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E2B10
+_020E2B74:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E2B98
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2B98:
+ add r4, r4, r0
+_020E2B9C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ blt _020E2BB8
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+_020E2BB8:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2BC8:
+ cmp r5, #0x0
+ beq _020E2C2C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2C2C
+_020E2BE0:
+ b _020E2C00
+_020E2BE4:
+ b _020E2C18
+_020E2BE8:
+ b _020E2C08
+_020E2BEC:
+ b _020E2C10
+_020E2BF0:
+ b _020E2C2C
+_020E2BF4:
+ b _020E2C2C
+_020E2BF8:
+ b _020E2C2C
+_020E2BFC:
+ b _020E2C20
+_020E2C00:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C08:
+ strh r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C10:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C18:
+ strb r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C20:
+ str r4, [r5, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r5, #0x4]
+_020E2C2C:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x0]
+ cmp r5, #0x0
+ bne _020E1F70
+_020E2C3C:
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2C68
+ ldr r0, [sp, #0x40]
+ cmp r0, #0x0
+ addeq sp, sp, #0x88
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,pc}
+_020E2C68:
+ ldr r0, [sp, #0x44]
+ add sp, sp, #0x88
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E2C74: .word 0x0210430C
+_020E2C78: .word 0x02106B78
+
+ arm_func_start __StringRead
+__StringRead: ; 0x020E2C7C
+ cmp r2, #0x0
+ beq _020E2C98
+ cmp r2, #0x1
+ beq _020E2CC8
+ cmp r2, #0x2
+ beq _020E2CF0
+ b _020E2CF8
+_020E2C98:
+ ldr r1, [r0, #0x0]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E2CB8
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ sub r0, r1, #0x2
+ bx lr
+_020E2CB8:
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ and r0, r2, #0xff
+ bx lr
+_020E2CC8:
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ movne r2, #0x0
+ strne r2, [r0, #0x4]
+ bne _020E2CE8
+ ldr r2, [r0, #0x0]
+ sub r2, r2, #0x1
+ str r2, [r0, #0x0]
+_020E2CE8:
+ mov r0, r1
+ bx lr
+_020E2CF0:
+ ldr r0, [r0, #0x4]
+ bx lr
+_020E2CF8:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start vsscanf
+vsscanf: ; 0x020E2D00
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r0, #0x0]
+ mov lr, r1
+ mov r3, r2
+ cmpne r0, #0x0
+ addeq sp, sp, #0xc
+ mvneq r0, #0x0
+ ldmeqia sp!, {pc}
+ mov r12, #0x0
+ str r12, [sp, #0x8]
+ ldr r0, _020E2D50 ; =__StringRead
+ add r1, sp, #0x4
+ mov r2, lr
+ str r12, [sp, #0x0]
+ bl __sformatter
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .balign 4
+_020E2D50: .word __StringRead
+
+ arm_func_start sscanf
+sscanf: ; 0x020E2D54
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r2, sp, #0xc
+ bic r2, r2, #0x3
+ ldr r1, [sp, #0xc]
+ add r2, r2, #0x4
+ bl vsscanf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start raise
+raise: ; 0x020E2D7C
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ cmp r5, #0x1
+ blt _020E2D94
+ cmp r5, #0x7
+ ble _020E2D9C
+_020E2D94:
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2D9C:
+ ldr r0, _020E2E98 ; =0x021D7178
+ bl OS_TryLockMutex
+_020E2DA4: ; 0x020E2DA4
+ cmp r0, #0x0
+ bne _020E2DD0
+ ldr r0, _020E2E9C ; =0x021D3498
+ ldr r1, _020E2EA0 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+ b _020E2E28
+_020E2DD0:
+ ldr r0, _020E2E9C ; =0x021D3498
+ ldr r1, _020E2EA0 ; =0x021D7088
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x1c]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E2E00
+ ldr r0, _020E2EA4 ; =0x021D70AC
+ ldr r1, [r0, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ b _020E2E28
+_020E2E00:
+ ldr r0, _020E2E98 ; =0x021D7178
+ bl OS_LockMutex
+ ldr r0, _020E2E9C ; =0x021D3498
+ ldr r1, _020E2EA0 ; =0x021D7088
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =0x021D70AC
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+_020E2E28:
+ ldr r1, _020E2EA8 ; =0x021D74AC
+ sub r2, r5, #0x1
+ ldr r4, [r1, r2, lsl #0x2]
+ cmp r4, #0x1
+ movne r0, #0x0
+ strne r0, [r1, r2, lsl #0x2]
+ ldr r0, _020E2EA4 ; =0x021D70AC
+ ldr r1, [r0, #0x1c]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ bne _020E2E5C
+ ldr r0, _020E2E98 ; =0x021D7178
+ bl OS_UnlockMutex
+_020E2E5C:
+ cmp r4, #0x1
+ beq _020E2E70
+ cmp r4, #0x0
+ cmpeq r5, #0x1
+ bne _020E2E78
+_020E2E70:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2E78:
+ cmp r4, #0x0
+ bne _020E2E88
+ mov r0, #0x0
+ bl exit
+_020E2E88:
+ mov r0, r5
+ blx r4
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2E98: .word 0x021D7178
+_020E2E9C: .word 0x021D3498
+_020E2EA0: .word 0x021D7088
+_020E2EA4: .word 0x021D70AC
+_020E2EA8: .word 0x021D74AC
+
+ arm_func_start strlen
+strlen: ; 0x020E2EAC
+ mvn r2, #0x0
+_020E2EB0:
+ ldrsb r1, [r0], #0x1
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E2EB0
+ mov r0, r2
+ bx lr
+
+ arm_func_start strcpy
+strcpy: ; 0x020E2EC8
+ stmdb sp!, {r3-r5,lr}
+ and r4, r1, #0x3
+ and r3, r0, #0x3
+ mov r2, r0
+ cmp r3, r4
+ bne _020E2F64
+ cmp r4, #0x0
+ beq _020E2F20
+ ldrb r3, [r1, #0x0]
+ strb r3, [r0, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020E2EF8: ; 0x020E2EF8
+ rsbs r4, r4, #0x3
+ beq _020E2F18
+_020E2F00:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ ldmeqia sp!, {r3-r5,pc}
+_020E2F10: ; 0x020E2F10
+ subs r4, r4, #0x1
+ bne _020E2F00
+_020E2F18:
+ add r2, r2, #0x1
+ add r1, r1, #0x1
+_020E2F20:
+ ldr r5, [r1, #0x0]
+ ldr r3, _020E2F88 ; =0xFEFEFEFF
+ mvn r4, r5
+ add lr, r5, r3
+ ldr ip, _020E2F8C ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ bne _020E2F64
+ sub r2, r2, #0x4
+_020E2F44:
+ str r5, [r2, #0x4]!
+ ldr r5, [r1, #0x4]!
+ add r4, r5, r3
+ mvn lr, r5
+ and lr, r4, lr
+ tst lr, r12
+ beq _020E2F44
+ add r2, r2, #0x4
+_020E2F64:
+ ldrb r3, [r1, #0x0]
+ strb r3, [r2, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020E2F74:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ bne _020E2F74
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2F88: .word 0xFEFEFEFF
+_020E2F8C: .word 0x80808080
+
+ arm_func_start strncpy
+strncpy: ; 0x020E2F90
+ stmdb sp!, {r3,lr}
+ mov lr, r0
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+_020E2FA0:
+ ldrsb r3, [r1], #0x1
+ mov r12, lr
+ strb r3, [lr], #0x1
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x0
+ bne _020E2FD4
+ subs r2, r2, #0x1
+ ldmeqia sp!, {r3,pc}
+_020E2FC0: ; 0x020E2FC0
+ mov r1, #0x0
+_020E2FC4:
+ strb r1, [lr], #0x1
+ subs r2, r2, #0x1
+ bne _020E2FC4
+ ldmia sp!, {r3,pc}
+_020E2FD4:
+ subs r2, r2, #0x1
+ bne _020E2FA0
+ ldmia sp!, {r3,pc}
+
+ arm_func_start strcat
+strcat: ; 0x020E2FE0
+ mov r3, r0
+_020E2FE4:
+ ldrsb r2, [r3], #0x1
+ cmp r2, #0x0
+ bne _020E2FE4
+ sub r3, r3, #0x1
+_020E2FF4:
+ ldrsb r2, [r1], #0x1
+ mov r12, r3
+ strb r2, [r3], #0x1
+ ldrsb r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E2FF4
+ bx lr
+
+ arm_func_start strncat
+strncat: ; 0x020E3010
+ stmdb sp!, {r3,lr}
+ mov r12, r0
+_020E3018:
+ ldrsb r3, [r12], #0x1
+ cmp r3, #0x0
+ bne _020E3018
+ cmp r2, #0x0
+ sub r12, r12, #0x1
+ beq _020E3054
+_020E3030:
+ ldrsb r3, [r1], #0x1
+ mov lr, r12
+ strb r3, [r12], #0x1
+ ldrsb r3, [lr, #0x0]
+ cmp r3, #0x0
+ subeq r12, r12, #0x1
+ beq _020E3054
+ subs r2, r2, #0x1
+ bne _020E3030
+_020E3054:
+ mov r1, #0x0
+ strb r1, [r12, #0x0]
+ ldmia sp!, {r3,pc}
+
+ arm_func_start strcmp
+strcmp: ; 0x020E3060
+ stmdb sp!, {r4,lr}
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+_020E3078: ; 0x020E3078
+ and r4, r0, #0x3
+ and r3, r1, #0x3
+ cmp r3, r4
+ bne _020E313C
+ cmp r4, #0x0
+ beq _020E30D4
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E309C: ; 0x020E309C
+ rsbs r4, r4, #0x3
+ beq _020E30CC
+_020E30A4:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+_020E30B8: ; 0x020E30B8
+ cmp r3, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E30C4: ; 0x020E30C4
+ subs r4, r4, #0x1
+ bne _020E30A4
+_020E30CC:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+_020E30D4:
+ ldr r2, [r0, #0x0]
+ ldr r3, _020E316C ; =0xFEFEFEFF
+ mvn r4, r2
+ add lr, r2, r3
+ ldr ip, _020E3170 ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ ldr r4, [r1, #0x0]
+ bne _020E3128
+ cmp r2, r4
+ bne _020E311C
+_020E3100:
+ ldr r2, [r0, #0x4]!
+ ldr r4, [r1, #0x4]!
+ add lr, r2, r3
+ tst lr, r12
+ bne _020E3128
+ cmp r2, r4
+ beq _020E3100
+_020E311C:
+ sub r0, r0, #0x1
+ sub r1, r1, #0x1
+ b _020E313C
+_020E3128:
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+_020E313C:
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E3148:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+_020E315C: ; 0x020E315C
+ cmp r3, #0x0
+ bne _020E3148
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020E316C: .word 0xFEFEFEFF
+_020E3170: .word 0x80808080
+
+ arm_func_start strncmp
+strncmp: ; 0x020E3174
+ cmp r2, #0x0
+ beq _020E31A0
+_020E317C:
+ ldrb r12, [r1], #0x1
+ ldrb r3, [r0], #0x1
+ cmp r3, r12
+ subne r0, r3, r12
+ bxne lr
+ cmp r3, #0x0
+ beq _020E31A0
+ subs r2, r2, #0x1
+ bne _020E317C
+_020E31A0:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start strchr
+strchr: ; 0x020E31A8
+ ldrsb r2, [r0], #0x1
+ mov r1, r1, lsl #0x18
+ mov r1, r1, asr #0x18
+ cmp r2, #0x0
+ beq _020E31D4
+_020E31BC:
+ cmp r2, r1
+ subeq r0, r0, #0x1
+ bxeq lr
+ ldrsb r2, [r0], #0x1
+ cmp r2, #0x0
+ bne _020E31BC
+_020E31D4:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x1
+ bx lr
+
+ arm_func_start strspn
+strspn: ; 0x020E31E4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x20
+ add r12, sp, #0x0
+ mov r3, #0x8
+ mov r2, #0x0
+_020E31F8:
+ strb r2, [r12, #0x0]
+ strb r2, [r12, #0x1]
+ strb r2, [r12, #0x2]
+ strb r2, [r12, #0x3]
+ add r12, r12, #0x4
+ subs r3, r3, #0x1
+ bne _020E31F8
+ ldrb r3, [r1, #0x0]
+ add r4, r1, #0x1
+ cmp r3, #0x0
+ beq _020E3254
+ add lr, sp, #0x0
+ mov r2, #0x1
+_020E322C:
+ and r12, r3, #0xff
+ and r1, r3, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [lr, r12, asr #0x3]
+ and r1, r1, #0xff
+ orr r1, r3, r1
+ strb r1, [lr, r12, asr #0x3]
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E322C
+_020E3254:
+ ldrb r1, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r1, #0x0
+ beq _020E3294
+ add r12, sp, #0x0
+ mov r2, #0x1
+_020E326C:
+ and r3, r1, #0xff
+ and r1, r1, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [r12, r3, asr #0x3]
+ and r1, r1, #0xff
+ tst r3, r1
+ bne _020E3294
+ ldrb r1, [r4], #0x1
+ cmp r1, #0x0
+ bne _020E326C
+_020E3294:
+ sub r0, r4, r0
+ sub r0, r0, #0x1
+ add sp, sp, #0x20
+ ldmia sp!, {r4,pc}
+
+ arm_func_start strstr
+strstr: ; 0x020E32A4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ ldrneb r2, [r1, #0x0]
+ cmpne r2, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E32B8: ; 0x020E32B8
+ ldrb r3, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r3, #0x0
+ beq _020E3308
+_020E32C8:
+ cmp r3, r2
+ bne _020E32FC
+ mov lr, r4
+ add r12, r1, #0x1
+_020E32D8:
+ ldrb r3, [r12], #0x1
+ ldrb r0, [lr], #0x1
+ cmp r0, r3
+ bne _020E32F0
+ cmp r0, #0x0
+ bne _020E32D8
+_020E32F0:
+ cmp r3, #0x0
+ subeq r0, r4, #0x1
+ ldmeqia sp!, {r4,pc}
+_020E32FC:
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E32C8
+_020E3308:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+
+ arm_func_start __strtold
+__strtold: ; 0x020E3310
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0xa8
+ ldr r4, [sp, #0xd0]
+ mov r10, #0x0
+ str r4, [sp, #0xd0]
+ str r0, [sp, #0x0]
+ add r6, sp, #0x80
+ mov r9, r1
+ mov r8, r2
+ str r3, [sp, #0x4]
+ mov r4, r10
+ str r10, [sp, #0x2c]
+ mov r5, #0x1
+ mov r0, #0x4
+_020E3348:
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ strh r10, [r6, #0x4]
+ strh r10, [r6, #0x6]
+ add r6, r6, #0x8
+ subs r0, r0, #0x1
+ bne _020E3348
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ ldr r2, [sp, #0x28]
+ ldr r1, [sp, #0xd0]
+ strh r10, [r6, #0x4]
+ str r2, [r1, #0x0]
+ mov r1, r2
+ mov r0, r8
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x8]
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ ldr r7, _020E42F0 ; =0x02104439
+ add r0, sp, #0x4d
+ mov r6, #0x4
+_020E33C0:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E33C0
+ ldrb r3, [r7, #0x0]
+ ldr r2, _020E42F4 ; =0x02104434
+ strb r3, [r0, #0x0]
+ ldrb r3, [r2, #0x1]
+ ldrb r0, [r2, #0x2]
+ ldrb r6, [r2, #0x0]
+ strb r3, [sp, #0x31]
+ strb r0, [sp, #0x32]
+ ldrb r3, [r2, #0x3]
+ ldrb r0, [r2, #0x4]
+ strb r6, [sp, #0x30]
+ strb r3, [sp, #0x33]
+ strb r0, [sp, #0x34]
+ b _020E4104
+_020E3418:
+ cmp r5, #0x100
+ bgt _020E3490
+ bge _020E3B98
+ cmp r5, #0x20
+ bgt _020E3474
+ bge _020E3A6C
+ cmp r5, #0x8
+ bgt _020E3468
+ cmp r5, #0x0
+ addge pc, pc, r5, lsl #0x2
+ b _020E4104
+_020E3444: ; 0x020E3444
+ b _020E4104
+_020E3448: ; 0x020E3448
+ b _020E34D4
+_020E344C: ; 0x020E344C
+ b _020E38B8
+_020E3450: ; 0x020E3450
+ b _020E4104
+_020E3454: ; 0x020E3454
+ b _020E3968
+_020E3458: ; 0x020E3458
+ b _020E4104
+_020E345C: ; 0x020E345C
+ b _020E4104
+_020E3460: ; 0x020E3460
+ b _020E4104
+_020E3464: ; 0x020E3464
+ b _020E3990
+_020E3468:
+ cmp r5, #0x10
+ beq _020E3A34
+ b _020E4104
+_020E3474:
+ cmp r5, #0x40
+ bgt _020E3484
+ beq _020E3AF8
+ b _020E4104
+_020E3484:
+ cmp r5, #0x80
+ beq _020E3B44
+ b _020E4104
+_020E3490:
+ cmp r5, #0x2000
+ bgt _020E34B8
+ bge _020E36EC
+ cmp r5, #0x200
+ bgt _020E34AC
+ beq _020E3BF8
+ b _020E4104
+_020E34AC:
+ cmp r5, #0x400
+ beq _020E3C20
+ b _020E4104
+_020E34B8:
+ cmp r5, #0x4000
+ bgt _020E34C8
+ beq _020E35F4
+ b _020E4104
+_020E34C8:
+ cmp r5, #0x8000
+ beq _020E3C98
+ b _020E4104
+_020E34D4:
+ cmp r1, #0x0
+ blt _020E34E4
+ cmp r1, #0x80
+ blt _020E34EC
+_020E34E4:
+ mov r0, #0x0
+ b _020E34FC
+_020E34EC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E34FC:
+ cmp r0, #0x0
+ beq _020E3528
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x2c]
+ b _020E4104
+_020E3528:
+ cmp r1, #0x0
+ blt _020E3538
+ cmp r1, #0x80
+ blt _020E3540
+_020E3538:
+ mov r0, r1
+ b _020E3548
+_020E3540:
+ ldr r0, _020E42FC ; =0x0210428C
+ ldrb r0, [r0, r1]
+_020E3548:
+ cmp r0, #0x49
+ bgt _020E3574
+ bge _020E35AC
+ cmp r0, #0x2d
+ bgt _020E35EC
+ cmp r0, #0x2b
+ blt _020E35EC
+ beq _020E3588
+ cmp r0, #0x2d
+ beq _020E3580
+ b _020E35EC
+_020E3574:
+ cmp r0, #0x4e
+ beq _020E35CC
+ b _020E35EC
+_020E3580:
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+_020E3588:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+ b _020E4104
+_020E35AC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x4000
+ b _020E4104
+_020E35CC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x2000
+ b _020E4104
+_020E35EC:
+ mov r5, #0x2
+ b _020E4104
+_020E35F4:
+ mov r5, #0x1
+ add r7, sp, #0x4d
+ add r0, sp, #0x76
+ mov r6, #0x4
+_020E3604:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E3604
+ ldrb r2, [r7, #0x0]
+ add r6, sp, #0x77
+ ldr r7, _020E42FC ; =0x0210428C
+ strb r2, [r0, #0x0]
+ b _020E3658
+_020E3638:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3658:
+ cmp r5, #0x8
+ bge _020E3688
+ cmp r1, #0x0
+ blt _020E3670
+ cmp r1, #0x80
+ blt _020E3678
+_020E3670:
+ mov r2, r1
+ b _020E367C
+_020E3678:
+ ldrb r2, [r7, r1]
+_020E367C:
+ ldrsb r0, [r6, #0x0]
+ cmp r0, r2
+ beq _020E3638
+_020E3688:
+ cmp r5, #0x3
+ cmpne r5, #0x8
+ bne _020E36E4
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E36B8
+ ldr r1, _020E4300 ; =0x02106B74
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl _fsub
+ bl _f2d
+ b _020E36C4
+_020E36B8:
+ ldr r0, _020E4300 ; =0x02106B74
+ ldr r0, [r0, #0x0]
+ bl _f2d
+_020E36C4:
+ ldr r2, [sp, #0x2c]
+ add r3, r2, r5
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E36E4:
+ mov r5, #0x1000
+ b _020E4104
+_020E36EC:
+ ldrb r3, [sp, #0x30]
+ ldrb r0, [sp, #0x32]
+ ldrb r2, [sp, #0x31]
+ strb r3, [sp, #0x40]
+ strb r0, [sp, #0x42]
+ ldrb r3, [sp, #0x33]
+ ldrb r0, [sp, #0x34]
+ strb r2, [sp, #0x41]
+ mov r5, #0x1
+ strb r0, [sp, #0x44]
+ mov r6, #0x0
+ add r2, sp, #0x56
+ strb r3, [sp, #0x43]
+ mov r0, #0x8
+_020E3724:
+ strb r6, [r2, #0x0]
+ strb r6, [r2, #0x1]
+ strb r6, [r2, #0x2]
+ strb r6, [r2, #0x3]
+ add r2, r2, #0x4
+ subs r0, r0, #0x1
+ bne _020E3724
+ add r7, sp, #0x41
+ b _020E3768
+_020E3748:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r7, r7, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3768:
+ cmp r5, #0x4
+ bge _020E379C
+ cmp r1, #0x0
+ blt _020E3780
+ cmp r1, #0x80
+ blt _020E3788
+_020E3780:
+ mov r2, r1
+ b _020E3790
+_020E3788:
+ ldr r0, _020E42FC ; =0x0210428C
+ ldrb r2, [r0, r1]
+_020E3790:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, r2
+ beq _020E3748
+_020E379C:
+ sub r0, r5, #0x3
+ cmp r0, #0x1
+ bhi _020E38B0
+ cmp r5, #0x4
+ bne _020E3854
+ ldr r7, _020E42F8 ; =0x0210430C
+ b _020E37DC
+_020E37B8:
+ add r0, sp, #0x56
+ strb r1, [r0, r6]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E37DC:
+ cmp r6, #0x20
+ bge _020E3844
+ cmp r1, #0x0
+ blt _020E37F4
+ cmp r1, #0x80
+ blt _020E37FC
+_020E37F4:
+ mov r0, #0x0
+ b _020E3808
+_020E37FC:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x8
+_020E3808:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x0
+ blt _020E3820
+ cmp r1, #0x80
+ blt _020E3828
+_020E3820:
+ mov r0, #0x0
+ b _020E3834
+_020E3828:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x1
+_020E3834:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x2e
+ beq _020E37B8
+_020E3844:
+ cmp r1, #0x29
+ movne r5, #0x1000
+ bne _020E4104
+ add r6, r6, #0x1
+_020E3854:
+ add r0, sp, #0x56
+ mov r1, #0x0
+ strb r1, [r0, r6]
+ ldr r1, [sp, #0x28]
+ cmp r1, #0x0
+ beq _020E3888
+ bl nan
+ mov r2, r0
+ mov r0, #0x0
+ mov r3, r1
+ mov r1, r0
+ bl _dsub
+_020E3884: ; 0x020E3884
+ b _020E388C
+_020E3888:
+ bl nan
+_020E388C:
+ ldr r2, [sp, #0x2c]
+ add r2, r2, r5
+ add r3, r6, r2
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E38B0:
+ mov r5, #0x1000
+ b _020E4104
+_020E38B8:
+ cmp r1, #0x2e
+ bne _020E38E0
+ mov r5, #0x10
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E38E0:
+ cmp r1, #0x0
+ blt _020E38F0
+ cmp r1, #0x80
+ blt _020E38F8
+_020E38F0:
+ mov r0, #0x0
+ b _020E3908
+_020E38F8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3908:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ bne _020E3960
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ cmp r0, #0x0
+ mov r1, r0
+ blt _020E394C
+ cmp r0, #0x80
+ bge _020E394C
+ ldr r2, _020E42FC ; =0x0210428C
+ ldrb r0, [r2, r0]
+_020E394C:
+ cmp r0, #0x58
+ moveq r5, #0x8000
+ moveq r10, #0x1
+ movne r5, #0x4
+ b _020E4104
+_020E3960:
+ mov r5, #0x8
+ b _020E4104
+_020E3968:
+ cmp r1, #0x30
+ movne r5, #0x8
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3990:
+ cmp r1, #0x0
+ blt _020E39A0
+ cmp r1, #0x80
+ blt _020E39A8
+_020E39A0:
+ mov r0, #0x0
+ b _020E39B8
+_020E39A8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E39B8:
+ cmp r0, #0x0
+ bne _020E39EC
+ cmp r1, #0x2e
+ movne r5, #0x40
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E39EC:
+ ldrb r2, [sp, #0x84]
+ cmp r2, #0x14
+ ldrcs r0, [sp, #0x1c]
+ addcs r0, r0, #0x1
+ strcs r0, [sp, #0x1c]
+ bhs _020E3A18
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r2
+ strb r1, [r0, #0x5]
+_020E3A18:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3A34:
+ cmp r1, #0x0
+ blt _020E3A44
+ cmp r1, #0x80
+ blt _020E3A4C
+_020E3A44:
+ mov r0, #0x0
+ b _020E3A5C
+_020E3A4C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A5C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ movne r5, #0x20
+ b _020E4104
+_020E3A6C:
+ cmp r1, #0x0
+ blt _020E3A7C
+ cmp r1, #0x80
+ blt _020E3A84
+_020E3A7C:
+ mov r0, #0x0
+ b _020E3A94
+_020E3A84:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A94:
+ cmp r0, #0x0
+ moveq r5, #0x40
+ beq _020E4104
+ ldrb r3, [sp, #0x84]
+ cmp r3, #0x14
+ bhs _020E3ADC
+ cmp r1, #0x30
+ cmpeq r3, #0x0
+ beq _020E3AD0
+ ldrb r2, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r3
+ add r2, r2, #0x1
+ strb r2, [sp, #0x84]
+ strb r1, [r0, #0x5]
+_020E3AD0:
+ ldr r0, [sp, #0x1c]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E3ADC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3AF8:
+ cmp r1, #0x0
+ blt _020E3B08
+ cmp r1, #0x80
+ blt _020E3B10
+_020E3B08:
+ mov r0, r1
+ b _020E3B18
+_020E3B10:
+ ldr r0, _020E42FC ; =0x0210428C
+ ldrb r0, [r0, r1]
+_020E3B18:
+ cmp r0, #0x45
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3B44:
+ cmp r1, #0x2b
+ bne _020E3B68
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E3B90
+_020E3B68:
+ cmp r1, #0x2d
+ bne _020E3B90
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x24]
+_020E3B90:
+ mov r5, #0x100
+ b _020E4104
+_020E3B98:
+ cmp r1, #0x0
+ blt _020E3BA8
+ cmp r1, #0x80
+ blt _020E3BB0
+_020E3BA8:
+ mov r0, #0x0
+ b _020E3BC0
+_020E3BB0:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3BC0:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x200
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3BF8:
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C20:
+ cmp r1, #0x0
+ blt _020E3C30
+ cmp r1, #0x80
+ blt _020E3C38
+_020E3C30:
+ mov r0, #0x0
+ b _020E3C48
+_020E3C38:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3C48:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x20]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ ldr r1, _020E4304 ; =0x00007FFF
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C98:
+ cmp r10, #0x20
+ bgt _020E3CE8
+ bge _020E3FBC
+ cmp r10, #0x8
+ bgt _020E3CDC
+ cmp r10, #0x0
+ addge pc, pc, r10, lsl #0x2
+ b _020E4104
+_020E3CB8: ; 0x020E3CB8
+ b _020E4104
+_020E3CBC: ; 0x020E3CBC
+ b _020E3D0C
+_020E3CC0: ; 0x020E3CC0
+ b _020E3D5C
+_020E3CC4: ; 0x020E3CC4
+ b _020E4104
+_020E3CC8: ; 0x020E3CC8
+ b _020E3D84
+_020E3CCC: ; 0x020E3CCC
+ b _020E4104
+_020E3CD0: ; 0x020E3CD0
+ b _020E4104
+_020E3CD4: ; 0x020E3CD4
+ b _020E4104
+_020E3CD8: ; 0x020E3CD8
+ b _020E3E94
+_020E3CDC:
+ cmp r10, #0x10
+ beq _020E3F70
+ b _020E4104
+_020E3CE8:
+ cmp r10, #0x80
+ bgt _020E3D00
+ bge _020E4064
+ cmp r10, #0x40
+ beq _020E4004
+ b _020E4104
+_020E3D00:
+ cmp r10, #0x100
+ beq _020E408C
+ b _020E4104
+_020E3D0C:
+ mov r1, #0x0
+ add r0, sp, #0x45
+ str r0, [sp, #0x14]
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ mov r0, r8
+ mov r2, r1
+ str r1, [sp, #0x8]
+ mov r11, r1
+ mov r10, #0x2
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D5C:
+ cmp r1, #0x30
+ movne r10, #0x4
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D84:
+ cmp r1, #0x0
+ blt _020E3D94
+ cmp r1, #0x80
+ blt _020E3D9C
+_020E3D94:
+ mov r0, #0x0
+ b _020E3DAC
+_020E3D9C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3DAC:
+ cmp r0, #0x0
+ bne _020E3DE0
+ cmp r1, #0x2e
+ movne r10, #0x10
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x8
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3DE0:
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3E78
+ mov r0, r2
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3E20
+ cmp r1, #0x80
+ bge _020E3E20
+ ldr r2, _020E42FC ; =0x0210428C
+ ldrb r1, [r2, r1]
+_020E3E20:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E78:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E94:
+ cmp r1, #0x0
+ blt _020E3EA4
+ cmp r1, #0x80
+ blt _020E3EAC
+_020E3EA4:
+ mov r0, #0x0
+ b _020E3EBC
+_020E3EAC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3EBC:
+ cmp r0, #0x0
+ moveq r10, #0x10
+ beq _020E4104
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3F54
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3EFC
+ cmp r1, #0x80
+ bge _020E3EFC
+ ldr r2, _020E42FC ; =0x0210428C
+ ldrb r1, [r2, r1]
+_020E3EFC:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F54:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F70:
+ cmp r1, #0x0
+ blt _020E3F80
+ cmp r1, #0x80
+ blt _020E3F88
+_020E3F80:
+ mov r0, r1
+ b _020E3F90
+_020E3F88:
+ ldr r0, _020E42FC ; =0x0210428C
+ ldrb r0, [r0, r1]
+_020E3F90:
+ cmp r0, #0x50
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3FBC:
+ cmp r1, #0x2d
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E3FE4
+ cmp r1, #0x2b
+ beq _020E3FE4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ sub r4, r4, #0x1
+_020E3FE4:
+ mov r10, #0x40
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4004:
+ cmp r1, #0x0
+ blt _020E4014
+ cmp r1, #0x80
+ blt _020E401C
+_020E4014:
+ mov r0, #0x0
+ b _020E402C
+_020E401C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E402C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4064:
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E408C:
+ cmp r1, #0x0
+ blt _020E409C
+ cmp r1, #0x80
+ blt _020E40A4
+_020E409C:
+ mov r0, #0x0
+ b _020E40B4
+_020E40A4:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =0x0210430C
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E40B4:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x10]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ str r0, [sp, #0x10]
+ ldr r1, _020E4304 ; =0x00007FFF
+ ldr r0, [sp, #0x20]
+ add r4, r4, #0x1
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+_020E4104:
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ bgt _020E4124
+ mvn r0, #0x0
+ cmp r1, r0
+ beq _020E4124
+ tst r5, #0x1800
+ beq _020E3418
+_020E4124:
+ cmp r5, #0x8000
+ beq _020E4140
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ b _020E4164
+_020E4140:
+ sub r0, r4, #0x1
+ cmp r0, #0x2
+ ble _020E4158
+ ldr r0, _020E430C ; =0x0000018E
+ tst r10, r0
+ bne _020E4160
+_020E4158:
+ mov r0, #0x1
+ b _020E4164
+_020E4160:
+ mov r0, #0x0
+_020E4164:
+ cmp r0, #0x0
+ movne r2, #0x0
+ ldrne r0, [sp, #0x4]
+ bne _020E4184
+ ldr r0, [sp, #0x2c]
+ sub r2, r4, #0x1
+ add r2, r2, r0
+ ldr r0, [sp, #0x4]
+_020E4184:
+ str r2, [r0, #0x0]
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ bne _020E4388
+ ldr r0, [sp, #0x24]
+ ldrb r2, [sp, #0x84]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x20]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x20]
+ add r0, sp, #0x85
+ add r1, r0, r2
+ b _020E41CC
+_020E41C0:
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E41CC:
+ cmp r2, #0x0
+ sub r2, r2, #0x1
+ beq _020E41E4
+ ldrb r0, [r1, #-0x1]!
+ cmp r0, #0x30
+ beq _020E41C0
+_020E41E4:
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ ands r2, r0, #0xff
+ bne _020E4208
+ add r1, r2, #0x1
+ strb r1, [sp, #0x84]
+ add r0, sp, #0x85
+ mov r1, #0x30
+ strb r1, [r0, r2]
+_020E4208:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ mov r2, #0x8000
+ add r0, r1, r0
+ rsb r2, r2, #0x0
+ str r0, [sp, #0x20]
+ cmp r0, r2
+ blt _020E4230
+ cmp r0, r2, lsr #0x11
+ ble _020E423C
+_020E4230:
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E423C:
+ ldr r0, [sp, #0xd0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020E4298
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ movne r0, #0x0
+ addne sp, sp, #0xa8
+ movne r1, r0
+ ldmneia sp!, {r3-r11,pc}
+_020E4264: ; 0x020E4264
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ ldreq r1, _020E4310 ; =0x02106B7C
+ addeq sp, sp, #0xa8
+ ldmeqia r1, {r0-r1}
+ ldmeqia sp!, {r3-r11,pc}
+_020E427C: ; 0x020E427C
+ ldr r1, _020E4310 ; =0x02106B7C
+ mov r0, #0x0
+ ldmia r1, {r2-r3}
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+_020E4298:
+ ldr r1, [sp, #0x20]
+ add r0, sp, #0x80
+ strh r1, [sp, #0x82]
+ bl __dec2num
+ mov r4, r0
+ mov r6, r1
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dneq
+ beq _020E4318
+ mov r0, r4
+ mov r1, r6
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ bhs _020E4318
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ b _020E4344
+ .balign 4
+_020E42F0: .word 0x02104439
+_020E42F4: .word 0x02104434
+_020E42F8: .word 0x0210430C
+_020E42FC: .word 0x0210428C
+_020E4300: .word 0x02106B74
+_020E4304: .word 0x00007FFF
+_020E4308: .word 0x00000E2C
+_020E430C: .word 0x0000018E
+_020E4310: .word 0x02106B7C
+_020E4314: .word 0x7FEFFFFF
+_020E4318:
+ ldr r3, _020E4314 ; =0x7FEFFFFF
+ mov r0, r4
+ mov r1, r6
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4344
+ ldr r0, [sp, #0xd0]
+ mov r2, #0x1
+ ldr r1, _020E4310 ; =0x02106B7C
+ str r2, [r0, #0x0]
+ ldmia r1, {r4,r6}
+_020E4344:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E4378
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ beq _020E4378
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dsub
+ mov r4, r0
+ mov r6, r1
+_020E4378:
+ add sp, sp, #0xa8
+ mov r0, r4
+ mov r1, r6
+ ldmia sp!, {r3-r11,pc}
+_020E4388:
+ ldr r0, [sp, #0xc]
+ add r4, sp, #0x38
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ ldrb r3, [sp, #0x45]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x8]
+ mov r2, #0x0
+ add r0, r1, r0, lsl #0x2
+ str r0, [sp, #0x10]
+ mov r1, #0x80
+ b _020E43D0
+_020E43C0:
+ ldr r0, [sp, #0x10]
+ add r2, r2, #0x1
+ sub r0, r0, #0x1
+ str r0, [sp, #0x10]
+_020E43D0:
+ cmp r2, #0x4
+ bhs _020E43E0
+ tst r3, r1, asr r2
+ beq _020E43C0
+_020E43E0:
+ adds r5, r2, #0x1
+ beq _020E442C
+ add r0, sp, #0x4c
+ add r3, sp, #0x45
+ str r0, [sp, #0x14]
+ mov r1, #0x0
+ cmp r0, r3
+ blo _020E442C
+ rsb r6, r5, #0x8
+_020E4404:
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x0]
+ orr r2, r1, r0, lsl r5
+ mov r1, r0, asr r6
+ ldr r0, [sp, #0x14]
+ and r1, r1, #0xff
+ strb r2, [r0], #-0x1
+ str r0, [sp, #0x14]
+ cmp r0, r3
+ bhs _020E4404
+_020E442C:
+ mov r2, #0x0
+ mov r6, r2
+ strb r2, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ strb r2, [r4, #0x2]
+ strb r2, [r4, #0x3]
+ strb r2, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ mov r3, #0xc
+ mov r7, #0x1
+ mov r0, #0xff
+ add r1, sp, #0x45
+_020E4464:
+ add r5, r2, #0x8
+ cmp r5, #0x34
+ ldrb r5, [r1, r6]
+ rsbhi r8, r2, #0x34
+ and r11, r3, #0x7
+ andhi r5, r5, r0, lsl r8
+ andhi r5, r5, #0xff
+ mov r8, r5, asr r11
+ and r9, r8, #0xff
+ ldrb r10, [r4, r7]
+ rsb r8, r11, #0x8
+ mov r5, r5, lsl r8
+ orr r9, r10, r9
+ strb r9, [r4, r7]
+ add r7, r7, #0x1
+ add r2, r2, #0x8
+ ldrb r8, [r4, r7]
+ and r5, r5, #0xff
+ cmp r2, #0x34
+ orr r5, r8, r5
+ strb r5, [r4, r7]
+ add r3, r3, #0x8
+ add r6, r6, #0x1
+ blo _020E4464
+ ldr r0, [sp, #0x10]
+ mov r1, #0x800
+ add r0, r0, #0xfe
+ add r2, r0, #0x300
+ rsb r1, r1, #0x0
+ tst r2, r1
+ beq _020E44FC
+ ldr r2, [sp, #0xd0]
+ mov r3, #0x1
+ mov r0, #0x0
+ add sp, sp, #0xa8
+ mov r1, r0
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E44FC:
+ ldrb r0, [r4, #0x1]
+ mov r2, r2, lsl #0x15
+ ldrb r1, [r4, #0x0]
+ orr r0, r0, r2, lsr #0x11
+ strb r0, [r4, #0x1]
+ ldr r0, [sp, #0x28]
+ orr r1, r1, r2, lsr #0x19
+ cmp r0, #0x0
+ andne r0, r1, #0xff
+ strb r1, [r4, #0x0]
+ orrne r0, r0, #0x80
+ strneb r0, [r4, #0x0]
+ mov r3, #0x0
+_020E4530:
+ rsb r1, r3, #0x7
+ ldrb r2, [r4, r3]
+ ldrb r0, [r4, r1]
+ strb r0, [r4, r3]
+ add r3, r3, #0x1
+ strb r2, [r4, r1]
+ cmp r3, #0x4
+ blt _020E4530
+ ldmia r4, {r0-r1}
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+
+ arm_func_start strtold
+strtold: ; 0x020E455C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ mov r7, r0
+ mov r0, #0x0
+ mov r6, r1
+ str r0, [sp, #0x8]
+ add r4, sp, #0xc
+ str r7, [sp, #0x4]
+ ldr r1, _020E4630 ; =__StringRead
+ add r2, sp, #0x4
+ add r3, sp, #0x10
+ sub r0, r0, #0x80000001
+ str r4, [sp, #0x0]
+ bl __strtold
+ mov r5, r1
+ mov r4, r0
+ cmp r6, #0x0
+ ldrne r0, [sp, #0x10]
+ mov r1, r5
+ addne r0, r7, r0
+ strne r0, [r6, #0x0]
+ mov r0, r4
+ bl fabs
+ ldr r2, [sp, #0xc]
+ mov r6, r0
+ mov r7, r1
+ cmp r2, #0x0
+ bne _020E4614
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r5
+ bl _dneq
+ beq _020E4620
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ blo _020E4614
+ ldr r3, _020E4634 ; =0x7FEFFFFF
+ mov r0, r6
+ mov r1, r7
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4620
+_020E4614:
+ ldr r0, _020E4638 ; =0x021D74A8
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+_020E4620:
+ mov r0, r4
+ mov r1, r5
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020E4630: .word __StringRead
+_020E4634: .word 0x7FEFFFFF
+_020E4638: .word 0x021D74A8
+
+ arm_func_start atod
+atod: ; 0x020E463C
+ ldr ip, _020E4648 ; =strtold
+ mov r1, #0x0
+ bx r12
+ .balign 4
+_020E4648: .word strtold
+
+arm_func_start __strtoul
+__strtoul:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ ldr r4, [sp, #0x38]
+ movs r9, r0
+ ldr r0, [sp, #0x34]
+ str r4, [sp, #0x38]
+ mov r4, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x34]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x30]
+ str r4, [sp, #0x8]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ str r0, [sp, #0x30]
+ mov r4, #0x1
+ bmi _020E46CC
+ cmp r9, #0x1
+ beq _020E46CC
+ cmp r9, #0x24
+ bgt _020E46CC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E46D4
+_020E46CC:
+ mov r4, #0x40
+ b _020E46F0
+_020E46D4:
+ ldr r1, [sp, #0x8]
+ mov r0, r7
+ mov r3, r1
+ mov r2, r1
+ add r5, r3, #0x1
+ blx r8
+ mov r6, r0
+_020E46F0:
+ cmp r9, #0x0
+ beq _020E4708
+ mov r1, r9
+ mvn r0, #0x0
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E4708:
+ mvn r11, #0x0
+ b _020E49C8
+_020E4710:
+ cmp r4, #0x8
+ bgt _020E4748
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E49C8
+_020E4724: ; 0x020E4724
+ b _020E49C8
+_020E4728: ; 0x020E4728
+ b _020E4754
+_020E472C: ; 0x020E472C
+ b _020E4800
+_020E4730: ; 0x020E4730
+ b _020E49C8
+_020E4734: ; 0x020E4734
+ b _020E483C
+_020E4738: ; 0x020E4738
+ b _020E49C8
+_020E473C: ; 0x020E473C
+ b _020E49C8
+_020E4740: ; 0x020E4740
+ b _020E49C8
+_020E4744: ; 0x020E4744
+ b _020E487C
+_020E4748:
+ cmp r4, #0x10
+ beq _020E487C
+ b _020E49C8
+_020E4754:
+ cmp r6, #0x0
+ blt _020E4764
+ cmp r6, #0x80
+ blt _020E476C
+_020E4764:
+ mov r0, #0x0
+ b _020E477C
+_020E476C:
+ ldr r0, _020E4A2C ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E477C:
+ cmp r0, #0x0
+ beq _020E47A8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ b _020E49C8
+_020E47A8:
+ cmp r6, #0x2b
+ bne _020E47CC
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E47F8
+_020E47CC:
+ cmp r6, #0x2d
+ bne _020E47F8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x34]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E47F8:
+ mov r4, #0x2
+ b _020E49C8
+_020E4800:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4834
+ cmp r6, #0x30
+ bne _020E4834
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E4834:
+ mov r4, #0x8
+ b _020E49C8
+_020E483C:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E486C
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E486C:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E49C8
+_020E487C:
+ ldr r0, [sp, #0x4]
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r0, #0x0
+ bne _020E48A0
+ mov r0, r11
+ mov r1, r9
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E48A0:
+ cmp r6, #0x0
+ blt _020E48B0
+ cmp r6, #0x80
+ blt _020E48B8
+_020E48B0:
+ mov r0, #0x0
+ b _020E48C8
+_020E48B8:
+ ldr r0, _020E4A2C ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E48C8:
+ cmp r0, #0x0
+ beq _020E48F0
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4978
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E49C8
+_020E48F0:
+ cmp r6, #0x0
+ blt _020E4900
+ cmp r6, #0x80
+ blt _020E4908
+_020E4900:
+ mov r0, #0x0
+ b _020E4918
+_020E4908:
+ ldr r0, _020E4A2C ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4918:
+ cmp r0, #0x0
+ beq _020E494C
+ cmp r6, #0x0
+ blt _020E4930
+ cmp r6, #0x80
+ blt _020E4938
+_020E4930:
+ mov r0, r6
+ b _020E4940
+_020E4938:
+ ldr r0, _020E4A30 ; =0x0210428C
+ ldrb r0, [r0, r6]
+_020E4940:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E495C
+_020E494C:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E49C8
+_020E495C:
+ cmp r6, #0x0
+ blt _020E4974
+ cmp r6, #0x80
+ bge _020E4974
+ ldr r0, _020E4A30 ; =0x0210428C
+ ldrb r6, [r0, r6]
+_020E4974:
+ sub r6, r6, #0x37
+_020E4978:
+ ldr r0, [sp, #0x4]
+ mov r4, #0x10
+ cmp r10, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mul r0, r10, r9
+ mov r10, r0
+ sub r0, r11, r0
+ cmp r6, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r10, r10, r6
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E49C8:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E49E4
+ cmp r6, r11
+ beq _020E49E4
+ tst r4, #0x60
+ beq _020E4710
+_020E49E4:
+ tst r4, #0x34
+ bne _020E49FC
+ ldr r0, [sp, #0x30]
+ mov r10, #0x0
+ str r10, [r0, #0x0]
+ b _020E4A10
+_020E49FC:
+ ldr r0, [sp, #0x8]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r1, [r0, #0x0]
+_020E4A10:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4A2C: .word 0x0210430C
+_020E4A30: .word 0x0210428C
+
+ arm_func_start __strtoull
+__strtoull: ; 0x020E4A34
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r4, [sp, #0x48]
+ movs r9, r0
+ ldr r0, [sp, #0x44]
+ str r4, [sp, #0x48]
+ mov r4, #0x0
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #0x14]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ mov r11, r4
+ str r0, [sp, #0x40]
+ mov r4, #0x1
+ bmi _020E4ABC
+ cmp r9, #0x1
+ beq _020E4ABC
+ cmp r9, #0x24
+ bgt _020E4ABC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E4AC4
+_020E4ABC:
+ mov r4, #0x40
+ b _020E4ADC
+_020E4AC4:
+ ldr r1, [sp, #0x14]
+ mov r0, r7
+ mov r2, r1
+ add r5, r1, #0x1
+ blx r8
+ mov r6, r0
+_020E4ADC:
+ cmp r9, #0x0
+ beq _020E4B00
+ mvn r0, #0x0
+ mov r1, r0
+ mov r3, r9, asr #0x1f
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4B00:
+ mvn r0, #0x0
+ str r0, [sp, #0x18]
+ b _020E4E08
+_020E4B0C:
+ cmp r4, #0x8
+ bgt _020E4B44
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E4E08
+_020E4B20: ; 0x020E4B20
+ b _020E4E08
+_020E4B24: ; 0x020E4B24
+ b _020E4B50
+_020E4B28: ; 0x020E4B28
+ b _020E4BFC
+_020E4B2C: ; 0x020E4B2C
+ b _020E4E08
+_020E4B30: ; 0x020E4B30
+ b _020E4C38
+_020E4B34: ; 0x020E4B34
+ b _020E4E08
+_020E4B38: ; 0x020E4B38
+ b _020E4E08
+_020E4B3C: ; 0x020E4B3C
+ b _020E4E08
+_020E4B40: ; 0x020E4B40
+ b _020E4C78
+_020E4B44:
+ cmp r4, #0x10
+ beq _020E4C78
+ b _020E4E08
+_020E4B50:
+ cmp r6, #0x0
+ blt _020E4B60
+ cmp r6, #0x80
+ blt _020E4B68
+_020E4B60:
+ mov r0, #0x0
+ b _020E4B78
+_020E4B68:
+ ldr r0, _020E4E78 ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E4B78:
+ cmp r0, #0x0
+ beq _020E4BA4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E4E08
+_020E4BA4:
+ cmp r6, #0x2b
+ bne _020E4BC8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4BF4
+_020E4BC8:
+ cmp r6, #0x2d
+ bne _020E4BF4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x44]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E4BF4:
+ mov r4, #0x2
+ b _020E4E08
+_020E4BFC:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4C30
+ cmp r6, #0x30
+ bne _020E4C30
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C30:
+ mov r4, #0x8
+ b _020E4E08
+_020E4C38:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E4C68
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C68:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E4E08
+_020E4C78:
+ ldr r1, [sp, #0x8]
+ mov r0, #0x0
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r1, r0
+ ldr r1, [sp, #0xc]
+ cmpeq r1, r0
+ bne _020E4CB4
+ ldr r0, [sp, #0x18]
+ mov r3, r9, asr #0x1f
+ mov r1, r0
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4CB4:
+ cmp r6, #0x0
+ blt _020E4CC4
+ cmp r6, #0x80
+ blt _020E4CCC
+_020E4CC4:
+ mov r0, #0x0
+ b _020E4CDC
+_020E4CCC:
+ ldr r0, _020E4E78 ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E4CDC:
+ cmp r0, #0x0
+ beq _020E4D04
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4D8C
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E4E08
+_020E4D04:
+ cmp r6, #0x0
+ blt _020E4D14
+ cmp r6, #0x80
+ blt _020E4D1C
+_020E4D14:
+ mov r0, #0x0
+ b _020E4D2C
+_020E4D1C:
+ ldr r0, _020E4E78 ; =0x0210430C
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4D2C:
+ cmp r0, #0x0
+ beq _020E4D60
+ cmp r6, #0x0
+ blt _020E4D44
+ cmp r6, #0x80
+ blt _020E4D4C
+_020E4D44:
+ mov r0, r6
+ b _020E4D54
+_020E4D4C:
+ ldr r0, _020E4E7C ; =0x0210428C
+ ldrb r0, [r0, r6]
+_020E4D54:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E4D70
+_020E4D60:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E4E08
+_020E4D70:
+ cmp r6, #0x0
+ blt _020E4D88
+ cmp r6, #0x80
+ bge _020E4D88
+ ldr r0, _020E4E7C ; =0x0210428C
+ ldrb r6, [r0, r6]
+_020E4D88:
+ sub r6, r6, #0x37
+_020E4D8C:
+ ldr r0, [sp, #0x8]
+ umull r2, r3, r10, r9
+ cmp r11, r0
+ ldr r0, [sp, #0xc]
+ mov r4, #0x10
+ cmpeq r10, r0
+ ldrhi r0, [sp, #0x48]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, r9, asr #0x1f
+ mla r3, r10, r1, r3
+ mla r3, r11, r9, r3
+ ldr r1, [sp, #0x18]
+ mov r10, r2
+ subs r2, r1, r2
+ mov r0, r6, asr #0x1f
+ sbc r1, r1, r3
+ cmp r0, r1
+ cmpeq r6, r2
+ ldrhi r1, [sp, #0x48]
+ movhi r2, #0x1
+ strhi r2, [r1, #0x0]
+ mov r1, #0x0
+ mov r11, r3
+ adds r10, r10, r6
+ adc r11, r11, r0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E4E08:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E4E28
+ ldr r0, [sp, #0x18]
+ cmp r6, r0
+ beq _020E4E28
+ tst r4, #0x60
+ beq _020E4B0C
+_020E4E28:
+ tst r4, #0x34
+ bne _020E4E44
+ ldr r0, [sp, #0x40]
+ mov r10, #0x0
+ mov r11, r10
+ str r10, [r0, #0x0]
+ b _020E4E58
+_020E4E44:
+ ldr r0, [sp, #0x14]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x40]
+ str r1, [r0, #0x0]
+_020E4E58:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ mov r1, r11
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4E78: .word 0x0210430C
+_020E4E7C: .word 0x0210428C
+
+ arm_func_start strtoul
+strtoul: ; 0x020E4E80
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4F10 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+_020E4EC8: ; 0x020E4EC8
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ beq _020E4EFC
+ ldr r0, _020E4F14 ; =0x021D74A8
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+ add sp, sp, #0x20
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E4EFC:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4F10: .word __StringRead
+_020E4F14: .word 0x021D74A8
+
+ arm_func_start strtold2
+strtold2: ; 0x020E4F18
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4FD8 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+_020E4F60: ; 0x020E4F60
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ bne _020E4FA4
+ ldr r2, [sp, #0x18]
+ cmp r2, #0x0
+ bne _020E4F94
+ mvn r1, #0x80000000
+ cmp r0, r1
+ bhi _020E4FA4
+_020E4F94:
+ cmp r2, #0x0
+ beq _020E4FC8
+ cmp r0, #0x80000000
+ bls _020E4FC8
+_020E4FA4:
+ ldr r0, [sp, #0x18]
+ ldr r1, _020E4FDC ; =0x021D74A8
+ mov r2, #0x22
+ cmp r0, #0x0
+ movne r0, #0x80000000
+ str r2, [r1, #0x0]
+ add sp, sp, #0x20
+ mvneq r0, #0x80000000
+ ldmia sp!, {r3-r5,pc}
+_020E4FC8:
+ cmp r2, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4FD8: .word __StringRead
+_020E4FDC: .word 0x021D74A8
+
+ arm_func_start atol
+atol: ; 0x020E4FE0
+ ldr ip, _020E4FF0 ; =strtold
+ mov r1, #0x0
+ mov r2, #0xa
+ bx r12
+ .balign 4
+_020E4FF0: .word strtold2
+
+arm_func_start fwide
+fwide:
+ cmp r0, #0x0
+ beq _020E500C
+ ldr r3, [r0, #0x4]
+ mov r2, r3, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ bne _020E5014
+_020E500C:
+ mov r0, #0x0
+ bx lr
+_020E5014:
+ mov r2, r3, lsl #0x14
+ movs r2, r2, lsr #0x1e
+ beq _020E5034
+ cmp r2, #0x1
+ beq _020E505C
+ cmp r2, #0x2
+ moveq r1, #0x1
+ b _020E5060
+_020E5034:
+ cmp r1, #0x0
+ ble _020E504C
+ bic r2, r3, #0xc00
+ orr r2, r2, #0x800
+ str r2, [r0, #0x4]
+ b _020E5060
+_020E504C:
+ biclt r2, r3, #0xc00
+ orrlt r2, r2, #0x400
+ strlt r2, [r0, #0x4]
+ b _020E5060
+_020E505C:
+ mvn r1, #0x0
+_020E5060:
+ mov r0, r1
+ bx lr
+
+ arm_func_start wmemcpy
+wmemcpy: ; 0x020E5068
+ ldr ip, _020E5074 ; =memcpy
+ mov r2, r2, lsl #0x1
+ bx r12
+ .balign 4
+_020E5074: .word memcpy
+
+arm_func_start wmemchr
+wmemchr:
+ cmp r2, #0x0
+ beq _020E5098
+_020E5080:
+ ldrh r3, [r0, #0x0]
+ cmp r3, r1
+ bxeq lr
+ add r0, r0, #0x2
+ subs r2, r2, #0x1
+ bne _020E5080
+_020E5098:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start parse_format_wprintf
+parse_format_wprintf: ; 0x020E50A0
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrh r3, [r0, #0x2]
+ mov r4, #0x0
+ mov r5, #0x1
+ mov lr, r2
+ strb r5, [sp, #0x0]
+ strb r4, [sp, #0x1]
+ strb r4, [sp, #0x2]
+ strb r4, [sp, #0x3]
+ strb r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r4, [sp, #0xc]
+ cmp r3, #0x25
+ add r12, r0, #0x2
+ bne _020E50FC
+ add r0, sp, #0x0
+ strh r3, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E50FC:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020E5110:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020E5140
+ bge _020E5168
+ cmp r3, #0x23
+ bgt _020E5198
+ cmp r3, #0x20
+ blt _020E5198
+ beq _020E5170
+ cmp r3, #0x23
+ beq _020E5180
+ b _020E5198
+_020E5140:
+ cmp r3, #0x30
+ bgt _020E5198
+ cmp r3, #0x2d
+ blt _020E5198
+ beq _020E5160
+ cmp r3, #0x30
+ beq _020E5188
+ b _020E5198
+_020E5160:
+ strb r6, [sp, #0x0]
+ b _020E519C
+_020E5168:
+ strb r7, [sp, #0x1]
+ b _020E519C
+_020E5170:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020E519C
+_020E5180:
+ strb r7, [sp, #0x3]
+ b _020E519C
+_020E5188:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020E519C
+_020E5198:
+ mov r8, r0
+_020E519C:
+ cmp r8, #0x0
+ ldrneh r3, [r12, #0x2]!
+ bne _020E5110
+ cmp r3, #0x2a
+ bne _020E51E4
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020E51DC
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020E51DC:
+ ldrh r3, [r12, #0x2]!
+ b _020E5228
+_020E51E4:
+ mov r2, #0x0
+ ldr r5, _020E560C ; =0x02104544
+ mov r0, #0xa
+ b _020E5208
+_020E51F4:
+ ldr r4, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r4, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r6, [sp, #0x8]
+_020E5208:
+ cmp r3, #0x80
+ movcs r4, r2
+ bhs _020E5220
+ mov r4, r3, lsl #0x1
+ ldrh r4, [r5, r4]
+ and r4, r4, #0x8
+_020E5220:
+ cmp r4, #0x0
+ bne _020E51F4
+_020E5228:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E5610 ; =0x000001FD
+ cmp r2, r0
+ ble _020E5258
+ ldr r1, _020E5614 ; =0x0000FFFF
+ add r0, sp, #0x0
+ strh r1, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E5258:
+ cmp r3, #0x2e
+ bne _020E52E0
+ ldrh r3, [r12, #0x2]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020E529C
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrh r3, [r12, #0x2]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020E52E0
+_020E529C:
+ mov r1, #0x0
+ ldr r4, _020E560C ; =0x02104544
+ mov r0, #0xa
+ b _020E52C0
+_020E52AC:
+ ldr r2, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r2, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r5, [sp, #0xc]
+_020E52C0:
+ cmp r3, #0x80
+ movcs r2, r1
+ bhs _020E52D8
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020E52D8:
+ cmp r2, #0x0
+ bne _020E52AC
+_020E52E0:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020E5318
+ cmp r3, #0x68
+ blt _020E530C
+ beq _020E5334
+ cmp r3, #0x6a
+ beq _020E5380
+ cmp r3, #0x6c
+ beq _020E5350
+ b _020E53A4
+_020E530C:
+ cmp r3, #0x4c
+ beq _020E5374
+ b _020E53A4
+_020E5318:
+ cmp r3, #0x74
+ bgt _020E5328
+ beq _020E538C
+ b _020E53A4
+_020E5328:
+ cmp r3, #0x7a
+ beq _020E5398
+ b _020E53A4
+_020E5334:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5350:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020E53A8
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5374:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5380:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E538C:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5398:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E53A4:
+ mov r0, #0x0
+_020E53A8:
+ cmp r0, #0x0
+ ldrneh r3, [r12, #0x2]!
+ strh r3, [sp, #0x6]
+ cmp r3, #0x61
+ bgt _020E53FC
+ bge _020E54E0
+ cmp r3, #0x47
+ bgt _020E53F0
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E55EC
+_020E53D4: ; 0x020E53D4
+ b _020E54E0
+_020E53D8: ; 0x020E53D8
+ b _020E55EC
+_020E53DC: ; 0x020E53DC
+ b _020E55EC
+_020E53E0: ; 0x020E53E0
+ b _020E55EC
+_020E53E4: ; 0x020E53E4
+ b _020E5528
+_020E53E8: ; 0x020E53E8
+ b _020E54A8
+_020E53EC: ; 0x020E53EC
+ b _020E5518
+_020E53F0:
+ cmp r3, #0x58
+ beq _020E5470
+ b _020E55EC
+_020E53FC:
+ cmp r3, #0x63
+ bgt _020E540C
+ beq _020E5588
+ b _020E55EC
+_020E540C:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020E55EC
+_020E541C:
+ b _020E5470
+_020E5420:
+ b _020E5528
+_020E5424:
+ b _020E54A8
+_020E5428:
+ b _020E5518
+_020E542C:
+ b _020E55EC
+_020E5430:
+ b _020E5470
+_020E5434:
+ b _020E55EC
+_020E5438:
+ b _020E55EC
+_020E543C:
+ b _020E55EC
+_020E5440:
+ b _020E55EC
+_020E5444:
+ b _020E55D8
+_020E5448:
+ b _020E5470
+_020E544C:
+ b _020E5564
+_020E5450:
+ b _020E55EC
+_020E5454:
+ b _020E55EC
+_020E5458:
+ b _020E55B4
+_020E545C:
+ b _020E55EC
+_020E5460:
+ b _020E5470
+_020E5464:
+ b _020E55EC
+_020E5468:
+ b _020E55EC
+_020E546C:
+ b _020E5470
+_020E5470:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E55F4
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020E55F4
+_020E54A8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E54E0:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0xd
+ streq r0, [sp, #0xc]
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ b _020E55F4
+_020E5518:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020E5528:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E5564:
+ mov r3, #0x3
+ mov r2, #0x1
+ mov r1, #0x78
+ mov r0, #0x8
+ strb r3, [sp, #0x4]
+ strb r2, [sp, #0x3]
+ strh r1, [sp, #0x6]
+ str r0, [sp, #0xc]
+ b _020E55F4
+_020E5588:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55B4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ cmp r0, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55D8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ b _020E55F4
+_020E55EC:
+ ldr r0, _020E5614 ; =0x0000FFFF
+ strh r0, [sp, #0x6]
+_020E55F4:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x2
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020E560C: .word 0x02104544
+_020E5610: .word 0x000001FD
+_020E5614: .word 0x0000FFFF
+
+ arm_func_start long2str_wide
+long2str_wide: ; 0x020E5618
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ movs r10, r0
+ mov r0, #0x0
+ mov r5, r1
+ str r0, [sp, #0xc]
+ ldr r7, [sp, #0x4c]
+ mov r6, r0
+ strh r0, [r5, #-0x2]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrh r8, [sp, #0x46]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020E568C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E5678
+ cmp r8, #0x6f
+ beq _020E568C
+_020E5678:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E568C:
+ cmp r8, #0x69
+ bgt _020E56B4
+ bge _020E56E8
+ cmp r8, #0x58
+ bgt _020E56A8
+ beq _020E5714
+ b _020E571C
+_020E56A8:
+ cmp r8, #0x64
+ beq _020E56E8
+ b _020E571C
+_020E56B4:
+ cmp r8, #0x6f
+ bgt _020E56C8
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020E571C
+_020E56C8:
+ cmp r8, #0x78
+ bgt _020E571C
+ cmp r8, #0x75
+ blt _020E571C
+ beq _020E5708
+ cmp r8, #0x78
+ beq _020E5714
+ b _020E571C
+_020E56E8:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020E571C
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020E571C
+_020E5708:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020E571C
+_020E5714:
+ mov r4, #0x10
+ mov r11, #0x0
+_020E571C:
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ mov r9, r1
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ cmp r9, #0xa
+ mov r10, r0
+ addlt r9, r9, #0x30
+ blt _020E5754
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020E5754:
+ cmp r10, #0x0
+ strh r9, [r5, #-0x2]!
+ add r6, r6, #0x1
+ bne _020E571C
+ cmp r4, #0x8
+ bne _020E5788
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r5, #-0x2]!
+ addne r6, r6, #0x1
+_020E5788:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020E57BC
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020E57BC
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020E57BC:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E5864 ; =0x000001FD
+ sub r0, r0, r5
+ add r0, r0, r0, lsr #0x1f
+ add r0, r7, r0, asr #0x1
+ cmp r0, r1
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020E5804
+ mov r0, #0x30
+_020E57F4:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strh r0, [r5, #-0x2]!
+ blt _020E57F4
+_020E5804:
+ cmp r4, #0x10
+ bne _020E5820
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r5, #-0x2]
+ strneh r0, [r5, #-0x4]!
+_020E5820:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r5, #-0x2]!
+ bne _020E5850
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r5, #-0x2]!
+ beq _020E5850
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqh r0, [r5, #-0x2]!
+_020E5850:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5864: .word 0x000001FD
+
+ arm_func_start longlong2str_wide
+longlong2str_wide: ; 0x020E5868
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x18
+ mov r9, r1
+ mov r1, #0x0
+ mov r10, r0
+ mov r6, r2
+ mov r0, r1
+ strh r0, [r6, #-0x2]!
+ ldr r0, [sp, #0x58]
+ cmp r9, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [sp, #0x4f]
+ cmpeq r10, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x54]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x8]
+ ldrb r0, [sp, #0x4d]
+ mov r7, r1
+ ldrh r8, [sp, #0x52]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020E58F8
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E58E4
+ cmp r8, #0x6f
+ beq _020E58F8
+_020E58E4:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E58F8:
+ cmp r8, #0x69
+ bgt _020E5920
+ bge _020E5950
+ cmp r8, #0x58
+ bgt _020E5914
+ beq _020E59A4
+ b _020E59B0
+_020E5914:
+ cmp r8, #0x64
+ beq _020E5950
+ b _020E59B0
+_020E5920:
+ cmp r8, #0x6f
+ bgt _020E5930
+ beq _020E5984
+ b _020E59B0
+_020E5930:
+ cmp r8, #0x78
+ bgt _020E59B0
+ cmp r8, #0x75
+ blt _020E59B0
+ beq _020E5994
+ cmp r8, #0x78
+ beq _020E59A4
+ b _020E59B0
+_020E5950:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020E59B0
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020E5978
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020E5978:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E59B0
+_020E5984:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020E59B0
+_020E5994:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020E59B0
+_020E59A4:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020E59B0:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ull_mod
+ mov r4, r0
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ll_udiv
+ mov r10, r0
+ cmp r4, #0xa
+ mov r9, r1
+ addlt r0, r4, #0x30
+ blt _020E59FC
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020E59FC:
+ strh r0, [r6, #-0x2]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020E59B0
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020E5A3C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r6, #-0x2]!
+ addne r7, r7, #0x1
+_020E5A3C:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E5A8C
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0xc]
+ cmpeq r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x1
+ strne r0, [sp, #0x10]
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E5A8C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E5A8C:
+ ldr r0, [sp, #0x0]
+ ldr r2, _020E5B48 ; =0x000001FD
+ sub r0, r0, r6
+ add r1, r0, r0, lsr #0x1f
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1, asr #0x1
+ cmp r0, r2
+ addgt sp, sp, #0x18
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldr r0, [sp, #0x10]
+ cmp r7, r0
+ bge _020E5AE0
+ mov r1, #0x30
+_020E5ACC:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strh r1, [r6, #-0x2]!
+ blt _020E5ACC
+_020E5AE0:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E5B00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r6, #-0x2]
+ strneh r0, [r6, #-0x4]!
+_020E5B00:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r6, #-0x2]!
+ bne _020E5B34
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r6, #-0x2]!
+ beq _020E5B34
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqh r0, [r6, #-0x2]!
+_020E5B34:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5B48: .word 0x000001FD
+
+ arm_func_start double2hex_wide
+double2hex_wide: ; 0x020E5B4C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E5EB8 ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrh r6, [sp, #0x7a]
+ ldrb r5, [sp, #0x77]
+ ldrb r4, [sp, #0x75]
+ ldr r1, [sp, #0x68]
+ ldr r2, [sp, #0x6c]
+ addgt sp, sp, #0x44
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r10,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r10, #0x0
+ mov r9, #0x20
+ add r0, sp, #0x8
+ add r3, sp, #0xc
+ strb r10, [sp, #0x8]
+ strh r9, [sp, #0xa]
+ bl __num2dec_internal2
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ bl fabs
+ mov r2, r0
+ mov r0, r10
+ mov r3, r1
+ mov r1, r0
+ bl _deq
+ bne _020E5BF4
+ sub r4, r8, #0xc
+ ldr r1, _020E5EBC ; =0x02106DE4
+ mov r0, r4
+ bl wcscpy
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5BF4:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E5C74
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5C38
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5C28
+ ldr r1, _020E5EC0 ; =0x02106DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C28:
+ ldr r1, _020E5EC4 ; =0x02106DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C38:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5C54
+ ldr r1, _020E5EC8 ; =0x02106E08
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C54:
+ ldr r1, _020E5ECC ; =0x02106E10
+ mov r0, r4
+ bl wcscpy
+_020E5C60:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5C74:
+ cmp r0, #0x4e
+ bne _020E5CF0
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5CB4
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5CA4
+ ldr r1, _020E5ED0 ; =0x02106E18
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CA4:
+ ldr r1, _020E5ED4 ; =0x02106E24
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CB4:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5CD0
+ ldr r1, _020E5ED8 ; =0x02106E30
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CD0:
+ ldr r1, _020E5EDC ; =0x02106E38
+ mov r0, r4
+ bl wcscpy
+_020E5CDC:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5CF0:
+ mov r3, r10
+ mov r1, #0x1
+ mov r0, #0x64
+ add r9, sp, #0x68
+ strb r1, [sp, #0x34]
+ strb r1, [sp, #0x35]
+ strb r3, [sp, #0x36]
+ strb r3, [sp, #0x37]
+ strb r3, [sp, #0x38]
+ str r3, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ strh r0, [sp, #0x3a]
+_020E5D20:
+ rsb r1, r3, #0x7
+ ldrsb r2, [r9, r3]
+ ldrsb r0, [r9, r1]
+ strb r0, [r9, r3]
+ add r3, r3, #0x1
+ strb r2, [r9, r1]
+ cmp r3, #0x4
+ blt _020E5D20
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E5EE0 ; =0x000007FF
+ mov r0, r0, lsl #0x11
+ orr r1, r0, r1, lsl #0x19
+ add r0, sp, #0x34
+ and lr, r9, r1, lsr #0x15
+ sub r12, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r12, {r0-r3}
+ rsb r0, r9, #0x400
+ mov r1, r8
+ add r0, lr, r0
+ ldmia r12, {r2-r3}
+ bl long2str_wide
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strh r1, [r0, #-0x2]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E5E30
+ mov r9, #0x30
+_020E5DA8:
+ cmp r8, #0x40
+ bge _020E5E18
+ ldrb r1, [r12, r8, asr #0x3]
+ and r2, r8, #0x7
+ rsb r3, r2, #0x7
+ mov r2, r1, asr r3
+ sub r10, r8, #0x4
+ bic r1, r8, #0x7
+ bic r10, r10, #0x7
+ cmp r1, r10
+ add r10, r12, r8, asr #0x3
+ and r1, r2, #0xff
+ beq _020E5DEC
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E5DEC:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E5E1C
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E5E1C
+_020E5E18:
+ mov r1, r9
+_020E5E1C:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strh r1, [r0, #-0x2]!
+ sub r8, r8, #0x4
+ bge _020E5DA8
+_020E5E30:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneh r1, [r0, #-0x2]!
+ mov r1, #0x31
+ strh r1, [r0, #-0x2]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strh r1, [r0, #-0x4]!
+ mov r1, #0x30
+ strh r1, [r0, #-0x2]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneh r1, [r0, #-0x2]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqh r1, [r0, #-0x2]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqh r1, [r0, #-0x2]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5EB8: .word 0x000001FD
+_020E5EBC: .word 0x02106DE4
+_020E5EC0: .word 0x02106DF0
+_020E5EC4: .word 0x02106DFC
+_020E5EC8: .word 0x02106E08
+_020E5ECC: .word 0x02106E10
+_020E5ED0: .word 0x02106E18
+_020E5ED4: .word 0x02106E24
+_020E5ED8: .word 0x02106E30
+_020E5EDC: .word 0x02106E38
+_020E5EE0: .word 0x000007FF
+
+ arm_func_start round_decimal_wide
+round_decimal_wide: ; 0x020E5EE4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E5F0C
+_020E5EF0:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ strb r1, [r0, #0x4]
+ mov r1, #0x30
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E5F0C:
+ ldrb lr, [r0, #0x4]
+ cmp r1, lr
+ ldmgeia sp!, {r4,pc}
+_020E5F18: ; 0x020E5F18
+ add r12, r0, #0x5
+ add r2, r12, r1
+ add r2, r2, #0x1
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x5
+ bne _020E5F6C
+ add r12, r12, lr
+_020E5F40:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E5F58
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E5F40
+_020E5F58:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E5F74
+_020E5F6C:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E5F74:
+ cmp r1, #0x0
+ beq _020E5FD0
+ mov r12, #0x0
+ mov lr, #0x1
+_020E5F84:
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ add r3, r3, r4
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x9
+ movgt r4, lr
+ movle r4, r12
+ cmp r4, #0x0
+ bne _020E5FB4
+ cmp r3, #0x0
+ bne _020E5FBC
+_020E5FB4:
+ sub r1, r1, #0x1
+ b _020E5FC8
+_020E5FBC:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E5FD0
+_020E5FC8:
+ cmp r1, #0x0
+ bne _020E5F84
+_020E5FD0:
+ cmp r4, #0x0
+ beq _020E5FF8
+ ldrsh r3, [r0, #0x2]
+ mov r2, #0x1
+ mov r1, #0x31
+ add r3, r3, #0x1
+ strh r3, [r0, #0x2]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E5FF8:
+ cmp r1, #0x0
+ beq _020E5EF0
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start float2str_wide
+float2str_wide: ; 0x020E6008
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r10, r0
+ add r0, sp, #0x250
+ ldr r7, [sp, #0x268]
+ ldr r3, _020E6628 ; =0x000001FD
+ ldrh r6, [r0, #0x12]
+ cmp r7, r3
+ ldrb r5, [sp, #0x25f]
+ ldrb r4, [sp, #0x25d]
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r12, #0x0
+ mov r11, #0x20
+ add r0, sp, #0x0
+ add r3, sp, #0x4
+ mov r1, r10
+ mov r2, r8
+ strb r12, [sp, #0x0]
+ strh r11, [sp, #0x2]
+ bl __num2dec_internal2
+ ldrb r0, [sp, #0x8]
+ add r1, sp, #0x9
+ add r0, r1, r0
+ b _020E609C
+_020E6084:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E609C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E60B4
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E6084
+_020E60B4:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E60D4
+ cmp r0, #0x49
+ beq _020E60E0
+ cmp r0, #0x4e
+ beq _020E6198
+ b _020E6244
+_020E60D4:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E6244
+_020E60E0:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E6140
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E6118
+ ldr r0, _020E662C ; =0x02104544
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6118:
+ cmp r0, #0x0
+ beq _020E6130
+ ldr r1, _020E6630 ; =0x02106DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6130:
+ ldr r1, _020E6634 ; =0x02106DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6140:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E6160
+ ldr r0, _020E662C ; =0x02104544
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6160:
+ cmp r0, #0x0
+ beq _020E6178
+ ldr r1, _020E6638 ; =0x02106E08
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6178:
+ ldr r1, _020E663C ; =0x02106E10
+ mov r0, r4
+ bl wcscpy
+_020E6184:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6198:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E61EC
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E61C4
+ ldr r0, _020E662C ; =0x02104544
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E61C4:
+ cmp r0, #0x0
+ beq _020E61DC
+ ldr r1, _020E6640 ; =0x02106E18
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61DC:
+ ldr r1, _020E6644 ; =0x02106E24
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61EC:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E620C
+ ldr r0, _020E662C ; =0x02104544
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E620C:
+ cmp r0, #0x0
+ beq _020E6224
+ ldr r1, _020E6648 ; =0x02106E30
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E6224:
+ ldr r1, _020E664C ; =0x02106E38
+ mov r0, r4
+ bl wcscpy
+_020E6230:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6244:
+ ldrb r1, [sp, #0x8]
+ ldrsh r2, [sp, #0x6]
+ add r0, sp, #0x200
+ sub r1, r1, #0x1
+ add r0, r0, #0x2a
+ add r1, r2, r1
+ sub r8, r0, #0x1
+ strh r1, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E62A0
+ bge _020E632C
+ cmp r6, #0x47
+ bgt _020E65EC
+ cmp r6, #0x45
+ blt _020E65EC
+ beq _020E632C
+ cmp r6, #0x46
+ beq _020E6478
+ cmp r6, #0x47
+ beq _020E62B8
+ b _020E65EC
+_020E62A0:
+ cmp r6, #0x66
+ bgt _020E62B0
+ beq _020E6478
+ b _020E65EC
+_020E62B0:
+ cmp r6, #0x67
+ bne _020E65EC
+_020E62B8:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E62D0
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal_wide
+_020E62D0:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E62E8
+ cmp r2, r7
+ blt _020E6308
+_020E62E8:
+ cmp r5, #0x0
+ ldreqb r0, [sp, #0x8]
+ subne r7, r7, #0x1
+ subeq r7, r0, #0x1
+ cmp r6, #0x67
+ moveq r6, #0x65
+ movne r6, #0x45
+ b _020E632C
+_020E6308:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E6478
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E6478
+_020E632C:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E6344
+ add r0, sp, #0x4
+ bl round_decimal_wide
+_020E6344:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E6650 ; =0x66666667
+ mov r0, #0xa
+ b _020E6398
+_020E6368:
+ mov r1, lr, lsr #0x1f
+ smull r2, r12, r3, lr
+ add r12, r1, r12, asr #0x2
+ smull r1, r2, r0, r12
+ sub r12, lr, r1
+ add r1, r12, #0x30
+ strb r1, [r8, #-0x1]!
+ mov r2, lr
+ smull r1, lr, r3, r2
+ mov r1, r2, lsr #0x1f
+ add lr, r1, lr, asr #0x2
+ add r10, r10, #0x1
+_020E6398:
+ cmp lr, #0x0
+ bne _020E6368
+ cmp r10, #0x2
+ blt _020E6368
+ add r0, sp, #0x2a
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r0, r8
+ ldr r0, _020E6628 ; =0x000001FD
+ add r1, r1, r7
+ cmp r1, r0
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldrb r1, [sp, #0x8]
+ add r0, r7, #0x1
+ cmp r1, r0
+ bge _020E6408
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E6408
+ mov r0, #0x30
+_020E63FC:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E63FC
+_020E6408:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E642C
+_020E641C:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E641C
+_020E642C:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r0, #0x2e
+ strneb r0, [r8, #-0x1]!
+ ldrb r0, [sp, #0x9]
+ strb r0, [r8, #-0x1]!
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E65EC
+_020E6478:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E64B8
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal_wide
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E64B8:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E6628 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ add r3, sp, #0x9
+ sub r6, r7, r1
+ cmp r6, #0x0
+ add r2, r3, r2
+ mov r10, #0x0
+ ble _020E650C
+ mov r3, #0x30
+_020E64FC:
+ add r10, r10, #0x1
+ cmp r10, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E64FC
+_020E650C:
+ mov r6, #0x0
+ b _020E6520
+_020E6514:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E6520:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E6514
+ cmp r6, r1
+ bge _020E654C
+ mov r3, #0x30
+_020E653C:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E653C
+_020E654C:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E65B4
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E6594
+ mov r3, #0x30
+_020E657C:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E657C
+_020E6594:
+ cmp r5, r0
+ bge _020E65BC
+_020E659C:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E659C
+ b _020E65BC
+_020E65B4:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E65BC:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E65EC:
+ mov r0, r8
+ bl strlen
+ sub r1, r9, r0, lsl #0x1
+ mov r0, r8
+ sub r4, r1, #0x2
+ bl strlen
+ mov r2, r0
+ mov r0, r4
+ mov r1, r8
+ bl mbstowcs
+ mov r0, r4
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6628: .word 0x000001FD
+_020E662C: .word 0x02104544
+_020E6630: .word 0x02106DF0
+_020E6634: .word 0x02106DFC
+_020E6638: .word 0x02106E08
+_020E663C: .word 0x02106E10
+_020E6640: .word 0x02106E18
+_020E6644: .word 0x02106E24
+_020E6648: .word 0x02106E30
+_020E664C: .word 0x02106E38
+_020E6650: .word 0x66666667
+
+arm_func_start __wpformatter
+__wpformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x430
+ mov r3, #0x20
+ mov r11, r2
+ strh r3, [sp, #0x1c]
+ ldrh r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r4, #0x0
+ beq _020E6F24
+_020E6684:
+ mov r0, r11
+ mov r1, #0x25
+ bl wcschr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E66D8
+ mov r0, r11
+ bl wcslen
+ movs r2, r0
+ add r4, r4, r2
+ beq _020E6F24
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E6F24
+ add sp, sp, #0x430
+ mvn r0, #0x0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E66D8:
+ sub r0, r0, r11
+ add r0, r0, r0, lsr #0x1f
+ movs r2, r0, asr #0x1
+ add r4, r4, r2
+ beq _020E6710
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6710:
+ add r1, sp, #0x400
+ ldr r0, [sp, #0xc]
+ add r1, r1, #0x64
+ add r2, sp, #0x20
+ bl parse_format_wprintf
+ ldrh r1, [sp, #0x26]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E6780
+ bge _020E6AEC
+ cmp r1, #0x47
+ bgt _020E6774
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E6768
+_020E674C: ; 0x020E674C
+ b _020E6AEC
+_020E6750: ; 0x020E6750
+ b _020E6D90
+_020E6754: ; 0x020E6754
+ b _020E6D90
+_020E6758: ; 0x020E6758
+ b _020E6D90
+_020E675C: ; 0x020E675C
+ b _020E6A7C
+_020E6760: ; 0x020E6760
+ b _020E6A7C
+_020E6764: ; 0x020E6764
+ b _020E6A7C
+_020E6768:
+ cmp r1, #0x25
+ beq _020E6D7C
+ b _020E6D90
+_020E6774:
+ cmp r1, #0x58
+ beq _020E6940
+ b _020E6D90
+_020E6780:
+ cmp r1, #0x75
+ bgt _020E67E8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E67DC
+_020E6794: ; 0x020E6794
+ b _020E6804
+_020E6798: ; 0x020E6798
+ b _020E6A7C
+_020E679C: ; 0x020E679C
+ b _020E6A7C
+_020E67A0: ; 0x020E67A0
+ b _020E6A7C
+_020E67A4: ; 0x020E67A4
+ b _020E6D90
+_020E67A8: ; 0x020E67A8
+ b _020E6804
+_020E67AC: ; 0x020E67AC
+ b _020E6D90
+_020E67B0: ; 0x020E67B0
+ b _020E6D90
+_020E67B4: ; 0x020E67B4
+ b _020E6D90
+_020E67B8: ; 0x020E67B8
+ b _020E6D90
+_020E67BC: ; 0x020E67BC
+ b _020E6C98
+_020E67C0: ; 0x020E67C0
+ b _020E6940
+_020E67C4: ; 0x020E67C4
+ b _020E6D90
+_020E67C8: ; 0x020E67C8
+ b _020E6D90
+_020E67CC: ; 0x020E67CC
+ b _020E6D90
+_020E67D0: ; 0x020E67D0
+ b _020E6B5C
+_020E67D4: ; 0x020E67D4
+ b _020E6D90
+_020E67D8: ; 0x020E67D8
+ b _020E6940
+_020E67DC:
+ cmp r1, #0x63
+ beq _020E6D24
+ b _020E6D90
+_020E67E8:
+ cmp r1, #0x78
+ bgt _020E67F8
+ beq _020E6940
+ b _020E6D90
+_020E67F8:
+ ldr r0, _020E6F38 ; =0x0000FFFF
+ cmp r1, r0
+ b _020E6D90
+_020E6804:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6824
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6824:
+ cmp r0, #0x4
+ bne _020E684C
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E684C:
+ cmp r0, #0x6
+ bne _020E6874
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E6874:
+ cmp r0, #0x7
+ bne _020E6890
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6890:
+ cmp r0, #0x8
+ bne _020E68AC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E68AC:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E68BC:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, asr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6904
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str_wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6928
+_020E6904:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str_wide
+ movs r6, r0
+ beq _020E6D90
+_020E6928:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6940:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6960
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E6960:
+ cmp r0, #0x4
+ bne _020E6988
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E6988:
+ cmp r0, #0x6
+ bne _020E69B0
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E69B0:
+ cmp r0, #0x7
+ bne _020E69CC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69CC:
+ cmp r0, #0x8
+ bne _020E69E8
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69E8:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E69F8:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, lsr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6A40
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str_wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6A64
+_020E6A40:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str_wide
+ movs r6, r0
+ beq _020E6D90
+_020E6A64:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6A7C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6AA0
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6AA0:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl float2str_wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6AEC:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6B10
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6B10:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl double2hex_wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6B5C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x5
+ bne _020E6BF8
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r6, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r6, #0x0
+ ldreq r6, _020E6F3C ; =0x02106E40
+ cmp r0, #0x0
+ beq _020E6BB0
+ ldrh r1, [r6], #0x2
+ ldrb r0, [sp, #0x22]
+ and r7, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6DDC
+ ldr r0, [sp, #0x2c]
+ cmp r7, r0
+ movgt r7, r0
+ b _020E6DDC
+_020E6BB0:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6BE8
+ ldr r7, [sp, #0x2c]
+ mov r0, r6
+ mov r2, r7
+ mov r1, #0x0
+ bl wmemchr
+_020E6BD0: ; 0x020E6BD0
+ cmp r0, #0x0
+ beq _020E6DDC
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6BE8:
+ mov r0, r6
+ bl wcslen
+ mov r7, r0
+ b _020E6DDC
+_020E6BF8:
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r5, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r5, #0x0
+ ldreq r5, _020E6F40 ; =0x02106E44
+ cmp r0, #0x0
+ beq _020E6C40
+ ldrh r1, [r6, #0x0]
+ ldrb r0, [sp, #0x22]
+ and r6, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6C78
+ ldr r0, [sp, #0x2c]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E6C78
+_020E6C40:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6C6C
+ ldr r6, [sp, #0x2c]
+ mov r0, r5
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+_020E6C60: ; 0x020E6C60
+ cmp r0, #0x0
+ subne r6, r0, r5
+ b _020E6C78
+_020E6C6C:
+ mov r0, r5
+ bl strlen
+ mov r6, r0
+_020E6C78:
+ add r0, sp, #0x30
+ mov r1, r5
+ mov r2, r6
+ bl mbstowcs
+ movs r7, r0
+ bmi _020E6D90
+ add r6, sp, #0x30
+ b _020E6DDC
+_020E6C98:
+ ldr r1, [sp, #0x464]
+ ldrb r0, [sp, #0x24]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r6, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E6F18
+_020E6CB8:
+ b _020E6CDC
+_020E6CBC:
+ b _020E6F18
+_020E6CC0:
+ b _020E6CE4
+_020E6CC4:
+ b _020E6CEC
+_020E6CC8:
+ b _020E6D14
+_020E6CCC:
+ b _020E6F18
+_020E6CD0:
+ b _020E6CF4
+_020E6CD4:
+ b _020E6D04
+_020E6CD8:
+ b _020E6D0C
+_020E6CDC:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6CE4:
+ strh r4, [r6, #0x0]
+ b _020E6F18
+_020E6CEC:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6CF4:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D04:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D0C:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D14:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D24:
+ ldrb r0, [sp, #0x24]
+ add r6, sp, #0x30
+ cmp r0, #0x5
+ bne _020E6D50
+ ldr r0, [sp, #0x464]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r0, [r0, #-0x4]
+ strh r0, [r6, #0x0]
+ b _020E6DDC
+_020E6D50:
+ ldr r0, [sp, #0x464]
+ add r1, sp, #0x18
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r3, [r0, #-0x4]
+ mov r0, r6
+ mov r2, #0x1
+ strb r3, [sp, #0x18]
+ bl mbtowc
+ mov r7, r0
+ b _020E6DDC
+_020E6D7C:
+ mov r0, #0x25
+ strh r0, [sp, #0x30]
+ add r6, sp, #0x30
+ mov r7, #0x1
+ b _020E6DDC
+_020E6D90:
+ ldr r0, [sp, #0xc]
+ bl wcslen
+ movs r5, r0
+ beq _020E6DC8
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r5
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6DC8:
+ add sp, sp, #0x430
+ add r0, r4, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6DDC:
+ ldrb r0, [sp, #0x20]
+ mov r5, r7
+ cmp r0, #0x0
+ beq _020E6E8C
+ cmp r0, #0x2
+ moveq r1, #0x30
+ movne r1, #0x20
+ strh r1, [sp, #0x1c]
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E6E48
+ cmp r1, #0x30
+ bne _020E6E48
+ mov r0, r8
+ mov r1, r6
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r6, r6, #0x2
+ sub r7, r7, #0x1
+_020E6E48:
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6E8C
+_020E6E54:
+ mov r0, r8
+ add r1, sp, #0x1c
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6E54
+_020E6E8C:
+ cmp r7, #0x0
+ beq _020E6EBC
+ mov r0, r8
+ mov r1, r6
+ mov r2, r7
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6EBC:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _020E6F14
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6F14
+ mov r7, #0x20
+_020E6ED8:
+ mov r0, r8
+ add r1, sp, #0x1a
+ mov r2, #0x1
+ strh r7, [sp, #0x1a]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6ED8
+_020E6F14:
+ add r4, r4, r5
+_020E6F18:
+ ldrh r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E6684
+_020E6F24:
+ mov r0, r4
+ add sp, sp, #0x430
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6F38: .word 0x0000FFFF
+_020E6F3C: .word 0x02106E40
+_020E6F40: .word 0x02106E44
+
+ arm_func_start __wStringWrite
+__wStringWrite: ; 0x020E6F44
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ mov r5, r2
+ ldr r2, [r4, #0x4]
+ add r0, r3, r5
+ cmp r0, r2
+ ldr r0, [r4, #0x0]
+ subhi r5, r2, r3
+ mov r2, r5
+ add r0, r0, r3, lsl #0x1
+ bl wmemcpy
+ ldr r1, [r4, #0x8]
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start swprintf
+swprintf: ; 0x020E6F84
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl vswprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start vswprintf
+vswprintf: ; 0x020E6FAC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E7018 ; =__wStringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __wpformatter
+_020E6FD8: ; 0x020E6FD8
+ cmp r0, #0x0
+ addlt sp, sp, #0xc
+ ldmltia sp!, {r4-r5,pc}
+_020E6FE4: ; 0x020E6FE4
+ cmp r0, r4
+ bhs _020E7000
+ mov r1, r0, lsl #0x1
+ mov r2, #0x0
+ add sp, sp, #0xc
+ strh r2, [r5, r1]
+ ldmia sp!, {r4-r5,pc}
+_020E7000:
+ mov r1, #0x0
+ add r0, r5, r4, lsl #0x1
+ strh r1, [r0, #-0x2]
+ sub r0, r1, #0x1
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E7018: .word __wStringWrite
+
+ arm_func_start wcslen
+wcslen: ; 0x020E701C
+ mvn r2, #0x0
+_020E7020:
+ ldrh r1, [r0], #0x2
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E7020
+ mov r0, r2
+ bx lr
+
+ arm_func_start wcscpy
+wcscpy: ; 0x020E7038
+ mov r3, r0
+_020E703C:
+ ldrh r2, [r1], #0x2
+ mov r12, r3
+ strh r2, [r3], #0x2
+ ldrh r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E703C
+ bx lr
+
+ arm_func_start wcschr
+wcschr: ; 0x020E7058
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ beq _020E707C
+_020E7064:
+ cmp r2, r1
+ subeq r0, r0, #0x2
+ bxeq lr
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ bne _020E7064
+_020E707C:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x2
+ bx lr
+
+ arm_func_start __ieee754_pow
+__ieee754_pow: ; 0x020E708C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x80
+ ldr r8, [sp, #0xb4]
+ ldr r6, [sp, #0xac]
+ ldr r0, [sp, #0xb0]
+ bic r9, r8, #0x80000000
+ orrs r1, r9, r0
+ ldr r7, [sp, #0xa8]
+ bic r4, r6, #0x80000000
+ addeq sp, sp, #0x80
+ moveq r0, #0x0
+ ldreq r1, _020E7638 ; =0x3FF00000
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r4, r1
+ bgt _020E70FC
+ bne _020E70E4
+ cmp r7, #0x0
+ bne _020E70FC
+_020E70E4:
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bgt _020E70FC
+ bne _020E7120
+ cmp r0, #0x0
+ beq _020E7120
+_020E70FC:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ bl _dadd
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7120:
+ cmp r6, #0x0
+ mov r5, #0x0
+ bge _020E7188
+ ldr r1, _020E7640 ; =0x43400000
+ cmp r9, r1
+ movge r5, #0x2
+ bge _020E7188
+ sub r1, r1, #0x3500000
+ cmp r9, r1
+ blt _020E7188
+ ldr r1, _020E7644 ; =0xFFFFFC01
+ add r1, r1, r9, asr #0x14
+ cmp r1, #0x14
+ ble _020E7170
+ rsb r2, r1, #0x34
+ mov r1, r0, lsr r2
+ cmp r0, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+ b _020E7188
+_020E7170:
+ cmp r0, #0x0
+ rsbeq r2, r1, #0x14
+ moveq r1, r9, asr r2
+ cmpeq r9, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+_020E7188:
+ cmp r0, #0x0
+ bne _020E72E4
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bne _020E723C
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r7
+ bne _020E71D0
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E71D0:
+ sub r0, r1, #0x40000000
+ cmp r4, r0
+ blt _020E7200
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xb0]
+ ldrge r1, [sp, #0xb4]
+ movlt r0, #0x0
+ add sp, sp, #0x80
+ movlt r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7200:
+ cmp r8, #0x0
+ mov r0, #0x0
+ addge sp, sp, #0x80
+ movge r1, r0
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E723C:
+ sub r0, r1, #0x40000000
+ cmp r9, r0
+ bne _020E7288
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xa8]
+ ldrge r1, [sp, #0xac]
+ addge sp, sp, #0x80
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xa8]
+ ldr r3, [sp, #0xac]
+ sub r1, r1, #0x40000000
+ mov r0, #0x0
+ bl _ddiv
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7288:
+ cmp r8, #0x40000000
+ bne _020E72B4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72B4:
+ ldr r0, _020E7648 ; =0x3FE00000
+ cmp r8, r0
+ bne _020E72E4
+ cmp r6, #0x0
+ blt _020E72E4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl _dsqrt
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72E4:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl fabs
+ str r0, [sp, #0x70]
+ str r1, [sp, #0x74]
+ cmp r7, #0x0
+ bne _020E73E8
+ ldr r0, _020E763C ; =0x7FF00000
+ cmp r4, r0
+ cmpne r4, #0x0
+ subne r0, r0, #0x40000000
+ cmpne r4, r0
+ bne _020E73E8
+ ldr r2, [sp, #0x70]
+ ldr r3, [sp, #0x74]
+ str r2, [sp, #0x78]
+ str r3, [sp, #0x7c]
+ cmp r8, #0x0
+ bge _020E7344
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E7344:
+ cmp r6, #0x0
+ bge _020E73D0
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r5
+ bne _020E73AC
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r4, r0
+ mov r5, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r5
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ b _020E73D0
+_020E73AC:
+ cmp r5, #0x1
+ bne _020E73D0
+ mov r0, #0x0
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E73D0:
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E73E8:
+ mov r0, r6, asr #0x1f
+ add r7, r0, #0x1
+ orrs r0, r7, r5
+ bne _020E7420
+ ldr r0, _020E764C ; =0x02106B78
+ ldr r1, _020E7650 ; =0x021D74A8
+ ldr r0, [r0, #0x0]
+ mov r2, #0x21
+ str r2, [r1, #0x0]
+ bl _f2d
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7420:
+ ldr r3, _020E7654 ; =0x41E00000
+ cmp r9, r3
+ ble _020E7724
+ add r0, r3, #0x2100000
+ cmp r9, r0
+ ble _020E7490
+ ldr r1, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r1
+ bgt _020E7464
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7464:
+ add r0, r1, #0x1
+ cmp r4, r0
+ blt _020E7490
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7490:
+ ldr r2, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r2
+ bge _020E74BC
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74BC:
+ add r0, r2, #0x1
+ cmp r4, r0
+ ble _020E74E8
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74E8:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ add r3, r2, #0x1
+ mov r2, #0x0
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ bl _dmul
+ mov r6, r1
+ mov r4, r0
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ ldr r1, _020E765C ; =0x3FD00000
+ mov r0, #0x0
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7660 ; =0x55555555
+ sub r1, r0, #0x15800000
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E7648 ; =0x3FE00000
+ bl _dsub
+ mov r2, r0
+ mov r0, r4
+ mov r3, r1
+ mov r1, r6
+ bl _dmul
+ mov r6, r0
+ mov r8, r1
+ mov r0, #0x60000000
+ ldr r1, _020E7664 ; =0x3FF71547
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E7668 ; =0xF85DDF44
+ ldr r1, _020E766C ; =0x3E54AE0B
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E7664 ; =0x3FF71547
+ mov r2, r6
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dsub
+ mov r6, r0
+ mov r8, r1
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r8
+ bl _dadd
+ mov r2, r4
+ mov r3, r9
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ bl _dsub
+ mov r2, r0
+ mov r0, r6
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+ b _020E7C80
+ .balign 4
+_020E7638: .word 0x3FF00000
+_020E763C: .word 0x7FF00000
+_020E7640: .word 0x43400000
+_020E7644: .word 0xFFFFFC01
+_020E7648: .word 0x3FE00000
+_020E764C: .word 0x02106B78
+_020E7650: .word 0x021D74A8
+_020E7654: .word 0x41E00000
+_020E7658: .word 0x3FEFFFFF
+_020E765C: .word 0x3FD00000
+_020E7660: .word 0x55555555
+_020E7664: .word 0x3FF71547
+_020E7668: .word 0xF85DDF44
+_020E766C: .word 0x3E54AE0B
+_020E7670: .word 0x652B82FE
+_020E7674: .word 0x0003988E
+_020E7678: .word 0x000BB67A
+_020E767C: .word 0x02104754
+_020E7680: .word 0x4A454EEF
+_020E7684: .word 0x3FCA7E28
+_020E7688: .word 0x93C9DB65
+_020E768C: .word 0x3FCD864A
+_020E7690: .word 0xA91D4101
+_020E7694: .word 0x3FD17460
+_020E7698: .word 0x518F264D
+_020E769C: .word 0x3FD55555
+_020E76A0: .word 0xDB6FABFF
+_020E76A4: .word 0x3FDB6DB6
+_020E76A8: .word 0x33333303
+_020E76AC: .word 0x3FE33333
+_020E76B0: .word 0x40080000
+_020E76B4: .word 0x3FEEC709
+_020E76B8: .word 0x145B01F5
+_020E76BC: .word 0xBE3E2FE0
+_020E76C0: .word 0xDC3A03FD
+_020E76C4: .word 0x02104764
+_020E76C8: .word 0x02104744
+_020E76CC: .word 0x40900000
+_020E76D0: .word 0x8800759C
+_020E76D4: .word 0x7E37E43C
+_020E76D8: .word 0x3C971547
+_020E76DC: .word 0x3F6F3400
+_020E76E0: .word 0xC2F8F359
+_020E76E4: .word 0x01A56E1F
+_020E76E8: .word 0x3FE62E43
+_020E76EC: .word 0xFEFA39EF
+_020E76F0: .word 0x3FE62E42
+_020E76F4: .word 0x0CA86C39
+_020E76F8: .word 0xBE205C61
+_020E76FC: .word 0x72BEA4D0
+_020E7700: .word 0x3E663769
+_020E7704: .word 0xC5D26BF1
+_020E7708: .word 0xBEBBBD41
+_020E770C: .word 0xAF25DE2C
+_020E7710: .word 0x3F11566A
+_020E7714: .word 0x16BEBD93
+_020E7718: .word 0xBF66C16C
+_020E771C: .word 0x5555553E
+_020E7720: .word 0x3FC55555
+_020E7724:
+ cmp r4, #0x100000
+ mov r6, #0x0
+ bge _020E7754
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ mov r2, r6
+ add r3, r3, #0x1600000
+ bl _dmul
+ mov r4, r1
+ str r0, [sp, #0x70]
+ str r4, [sp, #0x74]
+ sub r6, r6, #0x35
+_020E7754:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ ldr r1, _020E7674 ; =0x0003988E
+ and r2, r4, r0, lsr #0xc
+ add r0, r0, r4, asr #0x14
+ orr r9, r2, #0xff00000
+ cmp r2, r1
+ add r6, r6, r0
+ orr r9, r9, #0x30000000
+ movle r8, #0x0
+ ble _020E7794
+ ldr r0, _020E7678 ; =0x000BB67A
+ cmp r2, r0
+ movlt r8, #0x1
+ addge r6, r6, #0x1
+ subge r9, r9, #0x100000
+ movge r8, #0x0
+_020E7794:
+ ldr r2, _020E767C ; =0x02104754
+ ldr r0, [sp, #0x70]
+ add r1, r2, r8, lsl #0x3
+ ldr r3, [r1, #0x4]
+ ldr r2, [r2, r8, lsl #0x3]
+ mov r1, r9
+ str r9, [sp, #0x74]
+ bl _dsub
+ ldr r2, _020E767C ; =0x02104754
+ mov r10, r0
+ add r3, r2, r8, lsl #0x3
+ mov r4, r1
+ ldr r0, [sp, #0x70]
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ mov r1, r9
+ bl _dadd
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r1, [sp, #0x24]
+ mov r11, r0
+ ldr r3, [sp, #0x24]
+ mov r0, r10
+ mov r1, r4
+ mov r2, r11
+ bl _dmul
+ mov r2, r9, asr #0x1
+ orr r2, r2, #0x20000000
+ mov r9, r1
+ add r2, r2, #0x80000
+ add r1, r2, r8, lsl #0x12
+ ldr r2, _020E767C ; =0x02104754
+ str r0, [sp, #0x28]
+ add r3, r2, r8, lsl #0x3
+ mov r0, #0x0
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ str r9, [sp, #0x4c]
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x40]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ bl _dsub
+ str r0, [sp, #0x2c]
+ str r1, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r10, r0
+ mov r4, r1
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, [sp, #0x24]
+ mov r0, r11
+ bl _dmul
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x14]
+ mov r1, r9
+ mov r2, r0
+ mov r3, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ str r0, [sp, #0x34]
+ mov r11, r1
+ ldr r0, _020E7680 ; =0x4A454EEF
+ ldr r1, _020E7684 ; =0x3FCA7E28
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7688 ; =0x93C9DB65
+ ldr r1, _020E768C ; =0x3FCD864A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7690 ; =0xA91D4101
+ ldr r1, _020E7694 ; =0x3FD17460
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7698 ; =0x518F264D
+ ldr r1, _020E769C ; =0x3FD55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A0 ; =0xDB6FABFF
+ ldr r1, _020E76A4 ; =0x3FDB6DB6
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A8 ; =0x33333303
+ ldr r1, _020E76AC ; =0x3FE33333
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x34]
+ mov r1, r11
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x28]
+ mov r1, r9
+ mov r3, r9
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dadd
+ mov r4, r0
+ ldr r0, [sp, #0x48]
+ mov r10, r1
+ mov r1, r9
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ str r1, [sp, #0xc]
+ mov r11, r0
+ ldr r1, _020E76B0 ; =0x40080000
+ ldr r3, [sp, #0xc]
+ mov r0, #0x0
+ mov r2, r11
+ bl _dadd
+ mov r2, r4
+ mov r3, r10
+ bl _dadd
+_020E7A6C: ; 0x020E7A6C
+ mov r0, #0x0
+ ldr r3, _020E76B0 ; =0x40080000
+ mov r2, r0
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+ bl _dsub
+ ldr r3, [sp, #0xc]
+ mov r2, r11
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dsub
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ bl _dmul
+ str r0, [sp, #0x3c]
+ mov r11, r1
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x28]
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x3c]
+ mov r1, r11
+ bl _dadd
+ mov r9, r0
+ mov r11, r1
+ mov r0, r4
+ mov r1, r10
+ mov r2, r9
+ mov r3, r11
+ bl _dadd
+_020E7B28: ; 0x020E7B28
+ mov r0, #0x0
+ mov r2, r4
+ mov r3, r10
+ str r1, [sp, #0x6c]
+ str r0, [sp, #0x68]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r9
+ mov r1, r11
+ bl _dsub
+ mov r10, r1
+ mov r11, r0
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, #0xe0000000
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E76B8 ; =0x145B01F5
+ ldr r1, _020E76BC ; =0xBE3E2FE0
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dmul
+ mov r2, r11
+ mov r3, r10
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E76C0 ; =0xDC3A03FD
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76C4 ; =0x02104764
+ add r1, r0, r8, lsl #0x3
+ ldr r0, [r0, r8, lsl #0x3]
+ ldr r1, [r1, #0x4]
+ bl _dadd
+ mov r11, r0
+ mov r10, r1
+ mov r0, r6
+ bl _dflt
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ mov r0, r4
+ mov r1, r9
+ mov r2, r11
+ mov r3, r10
+ bl _dadd
+ ldr r2, _020E76C8 ; =0x02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dadd
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dsub
+ ldr r2, _020E76C8 ; =0x02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dsub
+ mov r2, r4
+ mov r3, r9
+ bl _dsub
+ mov r2, r0
+ mov r0, r11
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+_020E7C80:
+ sub r0, r5, #0x1
+ ldr r1, [sp, #0xb4]
+ orrs r0, r7, r0
+ ldr r5, _020E7638 ; =0x3FF00000
+ mov r2, #0x0
+ ldr r0, [sp, #0xb0]
+ mov r3, r1
+ mov r6, #0x0
+ subeq r5, r5, #0x80000000
+ str r1, [sp, #0x64]
+ str r2, [sp, #0x60]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ bl _dmul
+ mov r7, r0
+ mov r9, r1
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r4
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r9
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x64]
+ ldr r2, [sp, #0x58]
+ ldr r3, [sp, #0x5c]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ str r2, [sp, #0x68]
+ str r3, [sp, #0x6c]
+ bl _dadd
+ mov r9, r1
+ ldr r2, _020E76CC ; =0x40900000
+ str r0, [sp, #0x78]
+ str r9, [sp, #0x7c]
+ cmp r9, r2
+ blt _020E7E0C
+ add r1, r9, #0xf700000
+ add r1, r1, #0xb0000000
+ orrs r0, r1, r0
+ beq _020E7D8C
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7D8C:
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E76D8 ; =0x3C971547
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r1, r9
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dgr
+ bls _020E7EC0
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E0C:
+ bic r3, r9, #0x80000000
+ add r2, r2, #0xcc00
+ cmp r3, r2
+ blt _020E7EC0
+ ldr r2, _020E76DC ; =0x3F6F3400
+ add r2, r9, r2
+ orrs r2, r2, r0
+ beq _020E7E64
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E64:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dleq
+ bhi _020E7EC0
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7EC0:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ bic r3, r9, #0x80000000
+ ldr r1, _020E7648 ; =0x3FE00000
+ add r2, r0, r3, asr #0x14
+ cmp r3, r1
+ mov r4, #0x0
+ ble _020E7F3C
+ mov r1, #0x100000
+ add r2, r2, #0x1
+ add r2, r9, r1, asr r2
+ bic r3, r2, #0x80000000
+ add r0, r0, r3, asr #0x14
+ sub r3, r1, #0x1
+ mvn r3, r3, asr r0
+ sub r1, r1, #0x1
+ and r1, r2, r1
+ and r2, r2, r3
+ str r2, [sp, #0x54]
+ str r4, [sp, #0x50]
+ orr r1, r1, #0x100000
+ rsb r0, r0, #0x14
+ mov r4, r1, asr r0
+ cmp r9, #0x0
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ rsblt r4, r4, #0x0
+ bl _dsub
+ str r0, [sp, #0x68]
+ str r1, [sp, #0x6c]
+_020E7F3C:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, r7
+ mov r1, r8
+ bl _dadd
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E76E8 ; =0x3FE62E43
+ mov r2, r0
+ str r3, [sp, #0x54]
+ str r0, [sp, #0x50]
+ bl _dmul
+ mov r9, r0
+ mov r10, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76EC ; =0xFEFA39EF
+ ldr r1, _020E76F0 ; =0x3FE62E42
+ bl _dmul
+ mov r7, r0
+ mov r8, r1
+ ldr r0, _020E76F4 ; =0x0CA86C39
+ ldr r1, _020E76F8 ; =0xBE205C61
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ mov r0, r9
+ mov r1, r10
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r2, r9
+ mov r3, r10
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dsub
+ mov r8, r0
+ mov r9, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ mov r2, r0
+ str r2, [sp, #0x50]
+ mov r3, r1
+ str r3, [sp, #0x54]
+ ldr r0, _020E76FC ; =0x72BEA4D0
+ ldr r1, _020E7700 ; =0x3E663769
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7704 ; =0xC5D26BF1
+ ldr r1, _020E7708 ; =0xBEBBBD41
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E770C ; =0xAF25DE2C
+ ldr r1, _020E7710 ; =0x3F11566A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7714 ; =0x16BEBD93
+ ldr r1, _020E7718 ; =0xBF66C16C
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E771C ; =0x5555553E
+ ldr r1, _020E7720 ; =0x3FC55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ str r2, [sp, #0x58]
+ mov r3, r1
+ str r3, [sp, #0x5c]
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dmul
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ mov r2, #0x0
+ mov r3, #0x40000000
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _ddiv
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r8
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r0, r8
+ mov r3, r1
+ mov r1, r9
+ bl _dadd
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _dsub
+ add r3, r1, r4, lsl #0x14
+ mov r2, r3, asr #0x14
+ str r0, [sp, #0x78]
+ cmp r2, #0x0
+ str r1, [sp, #0x7c]
+ addgt r0, sp, #0x78
+ strgt r3, [r0, #0x4]
+ bgt _020E81F0
+ mov r2, r4
+ bl scalbn
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E81F0:
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r0, r6
+ mov r1, r5
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start copysign
+copysign: ; 0x020E8214
+ stmdb sp!, {r0-r3}
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ bic r1, r1, #0x80000000
+ and r0, r0, #0x80000000
+ orr r1, r1, r0
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start fabs
+fabs: ; 0x020E823C
+ stmdb sp!, {r0-r3}
+ add r2, sp, #0x0
+ ldr r1, [r2, #0x4]
+ ldr r0, [sp, #0x0]
+ bic r1, r1, #0x80000000
+ str r1, [r2, #0x4]
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start frexp
+frexp: ; 0x020E825C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r1, [sp, #0xc]
+ ldr r0, _020E8308 ; =0x7FF00000
+ mov r4, r2
+ bic r3, r1, #0x80000000
+ mov r2, #0x0
+ str r2, [r4, #0x0]
+ cmp r3, r0
+ ldr r0, [sp, #0x8]
+ bge _020E8290
+ orrs r0, r3, r0
+ bne _020E82A4
+_020E8290:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E82A4:
+ cmp r3, #0x100000
+ bge _020E82D0
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E830C ; =0x43500000
+ bl _dmul
+ mvn r2, #0x35
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ str r2, [r4, #0x0]
+ bic r3, r1, #0x80000000
+_020E82D0:
+ ldr r2, _020E8310 ; =0x800FFFFF
+ ldr r0, _020E8314 ; =0xFFFFFC02
+ and r1, r1, r2
+ orr r1, r1, #0xfe00000
+ orr r1, r1, #0x30000000
+ ldr r2, [r4, #0x0]
+ add r0, r0, r3, asr #0x14
+ add r2, r2, r0
+ ldr r0, [sp, #0x8]
+ str r2, [r4, #0x0]
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8308: .word 0x7FF00000
+_020E830C: .word 0x43500000
+_020E8310: .word 0x800FFFFF
+_020E8314: .word 0xFFFFFC02
+
+ arm_func_start ldexp
+ldexp: ; 0x020E8318
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r4, r2
+ bl __fpclassifyf
+ cmp r0, #0x2
+ ble _020E8350
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _deq
+ bne _020E8364
+_020E8350:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8364:
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8538 ; =0x7FF00000
+ ldr r1, [sp, #0x8]
+ and r0, r3, r0
+ movs r12, r0, asr #0x14
+ bne _020E83F0
+ bic r0, r3, #0x80000000
+ orrs r0, r1, r0
+ ldreq r0, [sp, #0x8]
+ ldreq r1, [sp, #0xc]
+ ldmeqia sp!, {r4,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E853C ; =0x43500000
+ mov r2, #0x0
+ bl _dmul
+ mov r3, r1
+ ldr r1, _020E8538 ; =0x7FF00000
+ ldr ip, _020E8540 ; =0xFFFF3CB0
+ and r1, r3, r1
+ mov r2, r0
+ mov r0, r1, asr #0x14
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ cmp r4, r12
+ sub r12, r0, #0x36
+ bge _020E83F0
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E83F0:
+ ldr r0, _020E854C ; =0x000007FF
+ cmp r12, r0
+ bne _020E841C
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r0
+ mov r3, r1
+ bl _dadd
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E841C:
+ add r2, r12, r4
+ sub r0, r0, #0x1
+ cmp r2, r0
+ ble _020E8460
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8460:
+ cmp r2, #0x0
+ ble _020E8488
+ ldr r1, _020E8558 ; =0x800FFFFF
+ ldr r0, [sp, #0x8]
+ and r1, r3, r1
+ orr r1, r1, r2, lsl #0x14
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8488:
+ mvn r0, #0x35
+ cmp r2, r0
+ bgt _020E8508
+ ldr r0, _020E855C ; =0x0000C350
+ cmp r4, r0
+ ble _020E84D4
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E84D4:
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8508:
+ ldr r0, _020E8558 ; =0x800FFFFF
+ add r1, r2, #0x36
+ and r0, r3, r0
+ orr r3, r0, r1, lsl #0x14
+ ldr r2, [sp, #0x8]
+ ldr r1, _020E8560 ; =0x3C900000
+ mov r0, #0x0
+ str r3, [sp, #0xc]
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8538: .word 0x7FF00000
+_020E853C: .word 0x43500000
+_020E8540: .word 0xFFFF3CB0
+_020E8544: .word 0xC2F8F359
+_020E8548: .word 0x01A56E1F
+_020E854C: .word 0x000007FF
+_020E8550: .word 0x8800759C
+_020E8554: .word 0x7E37E43C
+_020E8558: .word 0x800FFFFF
+_020E855C: .word 0x0000C350
+_020E8560: .word 0x3C900000
+
+ arm_func_start pow
+pow: ; 0x020E8564
+ ldr ip, _020E856C ; =__ieee754_pow
+ bx r12
+ .balign 4
+_020E856C: .word __ieee754_pow
+
+ arm_func_start __must_round
+__must_round: ; 0x020E8570
+ add r3, r0, #0x5
+ ldrb r2, [r3, r1]
+ add r12, r3, r1
+ cmp r2, #0x5
+ movhi r0, #0x1
+ bxhi lr
+ mvncc r0, #0x0
+ bxcc lr
+ ldrb r2, [r0, #0x4]
+ add r12, r12, #0x1
+ add r3, r3, r2
+ cmp r12, r3
+ bhs _020E85C0
+_020E85A4:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x0
+ movne r0, #0x1
+ bxne lr
+ add r12, r12, #0x1
+ cmp r12, r3
+ blo _020E85A4
+_020E85C0:
+ sub r1, r1, #0x1
+ add r0, r0, r1
+ ldrb r0, [r0, #0x5]
+ tst r0, #0x1
+ movne r0, #0x1
+ mvneq r0, #0x0
+ bx lr
+
+ arm_func_start __dorounddecup
+__dorounddecup: ; 0x020E85DC
+ add r3, r0, #0x5
+ add r1, r3, r1
+ sub r12, r1, #0x1
+ mov r1, #0x0
+_020E85EC:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x9
+ addcc r0, r2, #0x1
+ strccb r0, [r12, #0x0]
+ bxcc lr
+ cmp r12, r3
+ bne _020E8620
+ mov r1, #0x1
+ strb r1, [r12, #0x0]
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+ bx lr
+_020E8620:
+ strb r1, [r12], #-0x1
+ b _020E85EC
+_020E8628: ; 0x020E8628
+ bx lr
+
+ arm_func_start __rounddec
+__rounddec: ; 0x020E862C
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r1
+ mov r5, r0
+ cmp r4, #0x0
+ ldmleia sp!, {r3-r5,pc}
+_020E8640: ; 0x020E8640
+ ldrb r2, [r5, #0x4]
+ cmp r4, r2
+ ldmgeia sp!, {r3-r5,pc}
+_020E864C: ; 0x020E864C
+ bl __must_round
+ strb r4, [r5, #0x4]
+ cmp r0, #0x0
+ ldmltia sp!, {r3-r5,pc}
+_020E865C: ; 0x020E865C
+ mov r0, r5
+ mov r1, r4
+ bl __dorounddecup
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start __ull2dec
+__ull2dec: ; 0x020E866C
+ stmdb sp!, {r3-r11,lr}
+ mov r10, r0
+ mov r0, #0x0
+ mov r8, r2
+ strb r0, [r10, #0x0]
+ mov r9, r1
+ cmp r8, #0x0
+ strb r0, [r10, #0x4]
+ cmpeq r9, #0x0
+ beq _020E86F8
+ mov r6, #0xa
+ mov r11, r0
+ mov r5, r0
+ mov r4, r0
+_020E86A4:
+ ldrb r1, [r10, #0x4]
+ mov r0, r9
+ mov r2, r6
+ add r3, r1, #0x1
+ mov r7, r1
+ strb r3, [r10, #0x4]
+ mov r1, r8
+ mov r3, r11
+ bl _ull_mod
+ add r1, r10, r7
+ strb r0, [r1, #0x5]
+ mov r0, r9
+ mov r1, r8
+ mov r2, #0xa
+ mov r3, #0x0
+ bl _ll_udiv
+ mov r8, r1
+ mov r9, r0
+ cmp r8, r5
+ cmpeq r9, r4
+ bne _020E86A4
+_020E86F8:
+ ldrb r0, [r10, #0x4]
+ add r2, r10, #0x5
+ add r0, r2, r0
+ sub r3, r0, #0x1
+ cmp r2, r3
+ bhs _020E8728
+_020E8710:
+ ldrb r0, [r3, #0x0]
+ ldrb r1, [r2, #0x0]
+ strb r0, [r2], #0x1
+ strb r1, [r3], #-0x1
+ cmp r2, r3
+ blo _020E8710
+_020E8728:
+ ldrb r0, [r10, #0x4]
+ sub r0, r0, #0x1
+ strh r0, [r10, #0x2]
+ ldmia sp!, {r3-r11,pc}
+
+ arm_func_start __timesdec
+__timesdec: ; 0x020E8738
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x40
+ ldrb r6, [r1, #0x4]
+ ldrb r5, [r2, #0x4]
+ mov r4, #0x0
+ add r3, sp, #0x0
+ add r5, r6, r5
+ sub r5, r5, #0x1
+ add r3, r3, r5
+ add r6, r3, #0x1
+ mov r7, r6
+ strb r4, [r0, #0x0]
+ cmp r5, #0x0
+ ble _020E8800
+ add lr, r1, #0x5
+ add r11, r2, #0x5
+_020E8778:
+ ldrb r3, [r2, #0x4]
+ sub r10, r3, #0x1
+ sub r3, r5, r10
+ subs r9, r3, #0x1
+ ldrb r3, [r1, #0x4]
+ movmi r9, #0x0
+ submi r10, r5, #0x1
+ add r8, r10, #0x1
+ sub r3, r3, r9
+ cmp r8, r3
+ movgt r8, r3
+ add r10, r11, r10
+ add r9, lr, r9
+ cmp r8, #0x0
+ ble _020E87CC
+_020E87B4:
+ ldrb r12, [r9], #0x1
+ ldrb r3, [r10], #-0x1
+ sub r8, r8, #0x1
+ cmp r8, #0x0
+ mla r4, r12, r3, r4
+ bgt _020E87B4
+_020E87CC:
+ ldr r3, _020E88B8 ; =0xCCCCCCCD
+ sub r5, r5, #0x1
+ umull r8, r9, r4, r3
+ mov r9, r9, lsr #0x3
+ cmp r5, #0x0
+ mov r10, #0xa
+ umull r8, r9, r10, r9
+ sub r9, r4, r8
+ strb r9, [r6, #-0x1]!
+ mov r8, r4
+ umull r3, r4, r8, r3
+ mov r4, r4, lsr #0x3
+ bgt _020E8778
+_020E8800:
+ ldrsh r3, [r1, #0x2]
+ ldrsh r1, [r2, #0x2]
+ cmp r4, #0x0
+ add r1, r3, r1
+ strh r1, [r0, #0x2]
+ beq _020E8828
+ strb r4, [r6, #-0x1]!
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+_020E8828:
+ mov r3, #0x0
+ b _020E8840
+_020E8830:
+ ldrb r2, [r6], #0x1
+ add r1, r0, r3
+ add r3, r3, #0x1
+ strb r2, [r1, #0x5]
+_020E8840:
+ cmp r3, #0x20
+ bge _020E8850
+ cmp r6, r7
+ blo _020E8830
+_020E8850:
+ cmp r6, r7
+ addcs sp, sp, #0x40
+ strb r3, [r0, #0x4]
+ ldmcsia sp!, {r3-r11,pc}
+_020E8860: ; 0x020E8860
+ ldrb r1, [r6, #0x0]
+ cmp r1, #0x5
+ addcc sp, sp, #0x40
+ ldmccia sp!, {r3-r11,pc}
+_020E8870: ; 0x020E8870
+ bne _020E88A8
+ add r2, r6, #0x1
+ cmp r2, r7
+ bhs _020E8898
+_020E8880:
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ bne _020E88A8
+ add r2, r2, #0x1
+ cmp r2, r7
+ blo _020E8880
+_020E8898:
+ ldrb r1, [r6, #-0x1]
+ tst r1, #0x1
+ addeq sp, sp, #0x40
+ ldmeqia sp!, {r3-r11,pc}
+_020E88A8:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ add sp, sp, #0x40
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E88B8: .word 0xCCCCCCCD
+
+ arm_func_start __str2dec
+__str2dec: ; 0x020E88BC
+ stmdb sp!, {r3,lr}
+ strh r2, [r0, #0x2]
+ mov r12, #0x0
+ strb r12, [r0, #0x0]
+ b _020E88E4
+_020E88D0:
+ ldrsb r3, [r1], #0x1
+ add r2, r0, r12
+ add r12, r12, #0x1
+ sub r3, r3, #0x30
+ strb r3, [r2, #0x5]
+_020E88E4:
+ cmp r12, #0x20
+ bge _020E88F8
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E88D0
+_020E88F8:
+ strb r12, [r0, #0x4]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+_020E8908: ; 0x020E8908
+ cmp r2, #0x5
+ ldmltia sp!, {r3,pc}
+_020E8910: ; 0x020E8910
+ bgt _020E894C
+ ldrsb r2, [r1, #0x1]
+ add r1, r1, #0x1
+ cmp r2, #0x0
+ beq _020E8938
+_020E8924:
+ cmp r2, #0x30
+ bne _020E894C
+ ldrsb r2, [r1, #0x1]!
+ cmp r2, #0x0
+ bne _020E8924
+_020E8938:
+ sub r1, r12, #0x1
+ add r1, r0, r1
+ ldrb r1, [r1, #0x5]
+ tst r1, #0x1
+ ldmeqia sp!, {r3,pc}
+_020E894C:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ ldmia sp!, {r3,pc}
+
+ arm_func_start __two_exp
+__two_exp: ; 0x020E8958
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4c
+ mov r4, r1
+ mvn r2, #0x34
+ mov r5, r0
+ cmp r4, r2
+ bgt _020E8988
+ bge _020E8A54
+ sub r0, r2, #0xb
+ cmp r4, r0
+ beq _020E8A3C
+ b _020E8BE4
+_020E8988:
+ add r1, r4, #0x20
+ cmp r1, #0x28
+ addls pc, pc, r1, lsl #0x2
+ b _020E8BE4
+_020E8998:
+ b _020E8A68
+_020E899C:
+ b _020E8BE4
+_020E89A0:
+ b _020E8BE4
+_020E89A4:
+ b _020E8BE4
+_020E89A8:
+ b _020E8BE4
+_020E89AC:
+ b _020E8BE4
+_020E89B0:
+ b _020E8BE4
+_020E89B4:
+ b _020E8BE4
+_020E89B8:
+ b _020E8BE4
+_020E89BC:
+ b _020E8BE4
+_020E89C0:
+ b _020E8BE4
+_020E89C4:
+ b _020E8BE4
+_020E89C8:
+ b _020E8BE4
+_020E89CC:
+ b _020E8BE4
+_020E89D0:
+ b _020E8BE4
+_020E89D4:
+ b _020E8BE4
+_020E89D8:
+ b _020E8A7C
+_020E89DC:
+ b _020E8BE4
+_020E89E0:
+ b _020E8BE4
+_020E89E4:
+ b _020E8BE4
+_020E89E8:
+ b _020E8BE4
+_020E89EC:
+ b _020E8BE4
+_020E89F0:
+ b _020E8BE4
+_020E89F4:
+ b _020E8BE4
+_020E89F8:
+ b _020E8A90
+_020E89FC:
+ b _020E8AA4
+_020E8A00:
+ b _020E8AB8
+_020E8A04:
+ b _020E8ACC
+_020E8A08:
+ b _020E8AE0
+_020E8A0C:
+ b _020E8AF4
+_020E8A10:
+ b _020E8B08
+_020E8A14:
+ b _020E8B1C
+_020E8A18:
+ b _020E8B30
+_020E8A1C:
+ b _020E8B44
+_020E8A20:
+ b _020E8B58
+_020E8A24:
+ b _020E8B6C
+_020E8A28:
+ b _020E8B80
+_020E8A2C:
+ b _020E8B94
+_020E8A30:
+ b _020E8BA8
+_020E8A34:
+ b _020E8BBC
+_020E8A38:
+ b _020E8BD0
+_020E8A3C:
+ ldr r1, _020E8C88 ; =0x02106E88
+ mov r0, r5
+ mvn r2, #0x13
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A54:
+ ldr r1, _020E8C8C ; =0x02106EB8
+ add r2, r2, #0x25
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A68:
+ ldr r1, _020E8C90 ; =0x02106EE0
+ add r2, r2, #0x2b
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A7C:
+ ldr r1, _020E8C94 ; =0x02106EF8
+ add r2, r2, #0x30
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A90:
+ ldr r1, _020E8C98 ; =0x02106F08
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AA4:
+ ldr r1, _020E8C9C ; =0x02106F10
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AB8:
+ ldr r1, _020E8CA0 ; =0x02106F18
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8ACC:
+ ldr r1, _020E8CA4 ; =0x02106F20
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AE0:
+ ldr r1, _020E8CA8 ; =0x02106F28
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AF4:
+ ldr r1, _020E8CAC ; =0x02106F2C
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B08:
+ ldr r1, _020E8CB0 ; =0x02106F30
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B1C:
+ ldr r1, _020E8CB4 ; =0x02106F34
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B30:
+ ldr r1, _020E8CB8 ; =0x02106F38
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B44:
+ ldr r1, _020E8CBC ; =0x02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B58:
+ ldr r1, _020E8CC0 ; =0x02106F40
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B6C:
+ ldr r1, _020E8CC4 ; =0x02106F44
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B80:
+ ldr r1, _020E8CC8 ; =0x02106F48
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B94:
+ ldr r1, _020E8CCC ; =0x02106F4C
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BA8:
+ ldr r1, _020E8CD0 ; =0x02106F50
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BBC:
+ ldr r1, _020E8CD4 ; =0x02106F54
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BD0:
+ ldr r1, _020E8CD8 ; =0x02106F58
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BE4:
+ and r0, r4, #0x80000000
+ add r1, r4, r0, lsr #0x1f
+ add r0, sp, #0x26
+ mov r1, r1, asr #0x1
+ bl __two_exp
+ add r1, sp, #0x26
+ mov r0, r5
+ mov r2, r1
+ bl __timesdec
+ tst r4, #0x1
+ addeq sp, sp, #0x4c
+ ldmeqia sp!, {r4-r5,pc}
+_020E8C14: ; 0x020E8C14
+ add r3, sp, #0x0
+ mov r12, r5
+ mov r2, #0x9
+_020E8C20:
+ ldrh r1, [r12, #0x0]
+ ldrh r0, [r12, #0x2]
+ add r12, r12, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E8C20
+ ldrh r0, [r12, #0x0]
+ cmp r4, #0x0
+ strh r0, [r3, #0x0]
+ add r0, sp, #0x26
+ ble _020E8C64
+ ldr r1, _020E8CBC ; =0x02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ b _020E8C70
+_020E8C64:
+ ldr r1, _020E8CB4 ; =0x02106F34
+ mvn r2, #0x0
+ bl __str2dec
+_020E8C70:
+ add r1, sp, #0x0
+ add r2, sp, #0x26
+ mov r0, r5
+ bl __timesdec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E8C88: .word 0x02106E88
+_020E8C8C: .word 0x02106EB8
+_020E8C90: .word 0x02106EE0
+_020E8C94: .word 0x02106EF8
+_020E8C98: .word 0x02106F08
+_020E8C9C: .word 0x02106F10
+_020E8CA0: .word 0x02106F18
+_020E8CA4: .word 0x02106F20
+_020E8CA8: .word 0x02106F28
+_020E8CAC: .word 0x02106F2C
+_020E8CB0: .word 0x02106F30
+_020E8CB4: .word 0x02106F34
+_020E8CB8: .word 0x02106F38
+_020E8CBC: .word 0x02106F3C
+_020E8CC0: .word 0x02106F40
+_020E8CC4: .word 0x02106F44
+_020E8CC8: .word 0x02106F48
+_020E8CCC: .word 0x02106F4C
+_020E8CD0: .word 0x02106F50
+_020E8CD4: .word 0x02106F54
+_020E8CD8: .word 0x02106F58
+
+arm_func_start __equals_dec
+__equals_dec:
+ stmdb sp!, {r4,lr}
+ ldrb r3, [r0, #0x5]
+ cmp r3, #0x0
+ bne _020E8D00
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D00:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ bne _020E8D1C
+ cmp r3, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D1C:
+ ldrsh r3, [r0, #0x2]
+ ldrsh r2, [r1, #0x2]
+ cmp r3, r2
+ bne _020E8DB4
+ ldrb r4, [r0, #0x4]
+ ldrb r2, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r4
+ cmp r4, r2
+ movgt lr, r2
+ cmp lr, #0x0
+ ble _020E8D74
+_020E8D4C:
+ add r3, r0, r12
+ add r2, r1, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r3, r2
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+_020E8D68: ; 0x020E8D68
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8D4C
+_020E8D74:
+ cmp lr, r4
+ moveq r0, r1
+ ldrb r1, [r0, #0x4]
+ cmp r12, r1
+ bge _020E8DAC
+_020E8D88:
+ add r1, r0, r12
+ ldrb r1, [r1, #0x5]
+ cmp r1, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+_020E8D9C: ; 0x020E8D9C
+ ldrb r1, [r0, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r1
+ blt _020E8D88
+_020E8DAC:
+ mov r0, #0x1
+ ldmia sp!, {r4,pc}
+_020E8DB4:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+
+arm_func_start __less_dec
+__less_dec:
+ stmdb sp!, {r3-r5,lr}
+ ldrb r2, [r0, #0x5]
+ cmp r2, #0x0
+ bne _020E8DE0
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8DE0:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020E8DF0: ; 0x020E8DF0
+ ldrsh r3, [r1, #0x2]
+ ldrsh r2, [r0, #0x2]
+ cmp r2, r3
+ bne _020E8E90
+ ldrb r5, [r0, #0x4]
+ ldrb r4, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r5
+ cmp r5, r4
+ movgt lr, r4
+ cmp lr, #0x0
+ ble _020E8E54
+_020E8E20:
+ add r3, r1, r12
+ add r2, r0, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r2, r3
+ movcc r0, #0x1
+ ldmccia sp!, {r3-r5,pc}
+_020E8E3C: ; 0x020E8E3C
+ cmp r3, r2
+ movcc r0, #0x0
+ ldmccia sp!, {r3-r5,pc}
+_020E8E48: ; 0x020E8E48
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8E20
+_020E8E54:
+ cmp lr, r5
+ bne _020E8E88
+ cmp r12, r4
+ bge _020E8E88
+_020E8E64:
+ add r0, r1, r12
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ ldmneia sp!, {r3-r5,pc}
+_020E8E78: ; 0x020E8E78
+ ldrb r0, [r1, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r0
+ blt _020E8E64
+_020E8E88:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8E90:
+ movlt r0, #0x1
+ movge r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start __minus_dec
+__minus_dec: ; 0x020E8E9C
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r0
+ mov r5, #0x9
+_020E8EA8:
+ ldrh r4, [r1, #0x0]
+ ldrh r3, [r1, #0x2]
+ add r1, r1, #0x4
+ subs r5, r5, #0x1
+ strh r4, [r6, #0x0]
+ strh r3, [r6, #0x2]
+ add r6, r6, #0x4
+ bne _020E8EA8
+ ldrh r1, [r1, #0x0]
+ strh r1, [r6, #0x0]
+ ldrb r1, [r2, #0x5]
+ cmp r1, #0x0
+ ldmeqia sp!, {r3-r7,pc}
+_020E8EDC: ; 0x020E8EDC
+ ldrb r7, [r0, #0x4]
+ ldrb r3, [r2, #0x4]
+ ldrsh r4, [r0, #0x2]
+ mov r1, r7
+ cmp r7, r3
+ movlt r1, r3
+ ldrsh r3, [r2, #0x2]
+ sub r6, r4, r3
+ add r1, r1, r6
+ cmp r1, #0x20
+ movgt r1, #0x20
+ cmp r7, r1
+ bge _020E8F34
+ mov r4, #0x0
+_020E8F14:
+ ldrb r5, [r0, #0x4]
+ add r3, r0, r7
+ add r5, r5, #0x1
+ strb r5, [r0, #0x4]
+ strb r4, [r3, #0x5]
+ ldrb r7, [r0, #0x4]
+ cmp r7, r1
+ blt _020E8F14
+_020E8F34:
+ ldrb r4, [r2, #0x4]
+ add r3, r0, #0x5
+ add r12, r3, r1
+ add r4, r4, r6
+ cmp r4, r1
+ addlt r12, r3, r4
+ sub r4, r12, r3
+ add r1, r2, #0x5
+ sub r4, r4, r6
+ add lr, r1, r4
+ mov r4, lr
+ b _020E8FC8
+_020E8F64:
+ ldrb r7, [r12, #-0x1]!
+ ldrb r5, [lr, #-0x1]!
+ cmp r7, r5
+ bhs _020E8FB8
+ ldrb r7, [r12, #-0x1]
+ sub r5, r12, #0x1
+ cmp r7, #0x0
+ bne _020E8F90
+_020E8F84:
+ ldrb r7, [r5, #-0x1]!
+ cmp r7, #0x0
+ beq _020E8F84
+_020E8F90:
+ cmp r5, r12
+ beq _020E8FB8
+_020E8F98:
+ ldrb r7, [r5, #0x0]
+ sub r7, r7, #0x1
+ strb r7, [r5, #0x0]
+ ldrb r7, [r5, #0x1]!
+ cmp r5, r12
+ add r7, r7, #0xa
+ strb r7, [r5, #0x0]
+ bne _020E8F98
+_020E8FB8:
+ ldrb r7, [r12, #0x0]
+ ldrb r5, [lr, #0x0]
+ sub r5, r7, r5
+ strb r5, [r12, #0x0]
+_020E8FC8:
+ cmp r12, r3
+ cmphi lr, r1
+ bhi _020E8F64
+ ldrb r5, [r2, #0x4]
+ sub lr, r4, r1
+ cmp lr, r5
+ bge _020E90A4
+ ldrb r1, [r4, #0x0]
+ mov r7, #0x0
+ cmp r1, #0x5
+ movcc r7, #0x1
+ blo _020E9040
+ bne _020E9040
+ add r1, r2, #0x5
+ add r2, r1, r5
+ add r4, r4, #0x1
+ cmp r4, r2
+ bhs _020E9028
+_020E9010:
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _020E90A4
+ add r4, r4, #0x1
+ cmp r4, r2
+ blo _020E9010
+_020E9028:
+ add r1, r3, lr
+ add r2, r1, r6
+ ldrb r1, [r2, #-0x1]
+ sub r12, r2, #0x1
+ tst r1, #0x1
+ movne r7, #0x1
+_020E9040:
+ cmp r7, #0x0
+ beq _020E90A4
+ ldrb r1, [r12, #0x0]
+ cmp r1, #0x1
+ bhs _020E9098
+ ldrb r1, [r12, #-0x1]
+ sub r2, r12, #0x1
+ cmp r1, #0x0
+ bne _020E9070
+_020E9064:
+ ldrb r1, [r2, #-0x1]!
+ cmp r1, #0x0
+ beq _020E9064
+_020E9070:
+ cmp r2, r12
+ beq _020E9098
+_020E9078:
+ ldrb r1, [r2, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r2, #0x0]
+ ldrb r1, [r2, #0x1]!
+ cmp r2, r12
+ add r1, r1, #0xa
+ strb r1, [r2, #0x0]
+ bne _020E9078
+_020E9098:
+ ldrb r1, [r12, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r12, #0x0]
+_020E90A4:
+ ldrb r1, [r3, #0x0]
+ mov r5, r3
+ cmp r1, #0x0
+ bne _020E90C0
+_020E90B4:
+ ldrb r1, [r5, #0x1]!
+ cmp r1, #0x0
+ beq _020E90B4
+_020E90C0:
+ cmp r5, r3
+ bls _020E9108
+ ldrsh r1, [r0, #0x2]
+ sub r2, r5, r3
+ and r4, r2, #0xff
+ sub r1, r1, r4
+ strh r1, [r0, #0x2]
+ ldrb r1, [r0, #0x4]
+ add r2, r3, r1
+ cmp r5, r2
+ bhs _020E90FC
+_020E90EC:
+ ldrb r1, [r5], #0x1
+ cmp r5, r2
+ strb r1, [r3], #0x1
+ blo _020E90EC
+_020E90FC:
+ ldrb r1, [r0, #0x4]
+ sub r1, r1, r4
+ strb r1, [r0, #0x4]
+_020E9108:
+ ldrb r1, [r0, #0x4]
+ add r2, r0, #0x5
+ add r3, r2, r1
+ cmp r3, r2
+ bls _020E9130
+_020E911C:
+ ldrb r1, [r3, #-0x1]!
+ cmp r1, #0x0
+ bne _020E9130
+ cmp r3, r2
+ bhi _020E911C
+_020E9130:
+ sub r1, r3, r2
+ add r1, r1, #0x1
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r7,pc}
+
+arm_func_start __num2dec_internal
+__num2dec_internal:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x58
+ mov r8, r1
+ mov r6, r2
+ mov r7, r0
+ mov r0, r8
+ mov r1, r6
+ bl __signbitf
+_020E9160: ; 0x020E9160
+ cmp r0, #0x0
+ movne r1, #0x1
+ moveq r1, #0x0
+ mov r4, r1, lsl #0x18
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ mov r5, r4, asr #0x18
+ bl _deq
+ bne _020E91AC
+ strb r5, [r7, #0x0]
+ mov r1, #0x0
+ strh r1, [r7, #0x2]
+ mov r0, #0x1
+ strb r0, [r7, #0x4]
+ add sp, sp, #0x58
+ strb r1, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91AC:
+ mov r0, r8
+ mov r1, r6
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bgt _020E91F8
+ strb r5, [r7, #0x0]
+ mov r2, #0x0
+ strh r2, [r7, #0x2]
+ mov r2, #0x1
+ mov r0, r8
+ mov r1, r6
+ strb r2, [r7, #0x4]
+ bl __fpclassifyf
+ cmp r0, #0x1
+ moveq r0, #0x4e
+ movne r0, #0x49
+ add sp, sp, #0x58
+ strb r0, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91F8:
+ cmp r5, #0x0
+ beq _020E921C
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ bl _dsub
+ mov r8, r0
+ mov r6, r1
+_020E921C:
+ add r2, sp, #0x8
+ mov r0, r8
+ mov r1, r6
+ bl frexp
+ mov r4, r0
+ mov r6, r1
+ orr r12, r4, #0x0
+ rsbs r2, r12, #0x0
+ orr r3, r6, #0x100000
+ rsc r1, r3, #0x0
+ mov r0, #0x0
+ and r3, r3, r1
+ sub r1, r0, #0x1
+ and r12, r12, r2
+ mov r2, r1
+ adds r0, r12, r1
+ adc r1, r3, r2
+ str r4, [sp, #0x0]
+ str r6, [sp, #0x4]
+ bl __msl_generic_count_bits64
+ rsb r8, r0, #0x35
+ ldr r1, [sp, #0x8]
+ add r0, sp, #0xc
+ sub r1, r1, r8
+ bl __two_exp
+ mov r0, r4
+ mov r1, r6
+ mov r2, r8
+ bl ldexp
+ bl _ll_ufrom_d
+ mov r2, r1
+ mov r1, r0
+ add r0, sp, #0x32
+ bl __ull2dec
+ mov r0, r7
+ add r1, sp, #0x32
+ add r2, sp, #0xc
+ bl __timesdec
+ strb r5, [r7, #0x0]
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start __num2dec_internal2
+__num2dec_internal2: ; 0x020E92C0
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r3
+ ldrsh r5, [r0, #0x2]
+ mov r0, r4
+ bl __num2dec_internal
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x9
+ ldmhiia sp!, {r3-r5,pc}
+_020E92E0: ; 0x020E92E0
+ cmp r5, #0x20
+ movgt r5, #0x20
+ mov r0, r4
+ mov r1, r5
+ bl __rounddec
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ bge _020E9324
+ mov r1, #0x0
+_020E9304:
+ ldrb r2, [r4, #0x4]
+ add r0, r4, r0
+ add r2, r2, #0x1
+ strb r2, [r4, #0x4]
+ strb r1, [r0, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ blt _020E9304
+_020E9324:
+ ldrsh r1, [r4, #0x2]
+ sub r0, r0, #0x1
+ mov r2, #0x0
+ sub r0, r1, r0
+ strh r0, [r4, #0x2]
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ ldmleia sp!, {r3-r5,pc}
+_020E9344:
+ add r1, r4, r2
+ ldrb r0, [r1, #0x5]
+ add r2, r2, #0x1
+ add r0, r0, #0x30
+ strb r0, [r1, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r2, r0
+ blt _020E9344
+ ldmia sp!, {r3-r5,pc}
+
+ arm_func_start __dec2num
+__dec2num: ; 0x020E9368
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xfc
+ mov r4, r0
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _020E93A8
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93A8:
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x30
+ beq _020E93C8
+ cmp r0, #0x49
+ beq _020E93F0
+ cmp r0, #0x4e
+ beq _020E9424
+ b _020E946C
+_020E93C8:
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93F0:
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =0x02106B74
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9424:
+ ldr r1, _020E9978 ; =0x7FF00000
+ add r3, sp, #0x10
+ mov r2, #0x0
+ str r2, [r3, #0x0]
+ str r1, [r3, #0x4]
+ ldrsb r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020E9454
+ orr r0, r1, #0x80000000
+ orr r1, r2, r2
+ str r1, [r3, #0x0]
+ str r0, [r3, #0x4]
+_020E9454:
+ ldmia r3, {r0-r1}
+ orr r0, r0, #0x0
+ orr r1, r1, #0x80000
+ stmia r3, {r0-r1}
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E946C:
+ add r3, sp, #0xd6
+ mov r5, r4
+ mov r2, #0x9
+_020E9478:
+ ldrh r1, [r5, #0x0]
+ ldrh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E9478
+ ldrh r0, [r5, #0x0]
+ add r1, sp, #0xdb
+ strh r0, [r3, #0x0]
+ ldrb r0, [sp, #0xda]
+ add r5, r1, r0
+ cmp r1, r5
+ bhs _020E94C8
+_020E94B4:
+ ldrb r0, [r1, #0x0]
+ sub r0, r0, #0x30
+ strb r0, [r1], #0x1
+ cmp r1, r5
+ blo _020E94B4
+_020E94C8:
+ ldrb r1, [sp, #0xda]
+ ldrsh r2, [sp, #0xd8]
+ add r0, sp, #0xb0
+ sub r1, r1, #0x1
+ add r1, r2, r1
+ strh r1, [sp, #0xd8]
+ ldr r1, _020E997C ; =0x02106F5C
+ mov r2, #0x134
+ ldrsh r11, [sp, #0xd8]
+ bl __str2dec
+ add r0, sp, #0xb0
+ add r1, sp, #0xd6
+ bl __less_dec
+_020E94FC: ; 0x020E94FC
+ cmp r0, #0x0
+ beq _020E9538
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =0x02106B74
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9538:
+ add r1, sp, #0xdb
+ ldrb r0, [r1, #0x0]
+ add r8, r1, #0x1
+ bl _dfltu
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ cmp r8, r5
+ bhs _020E9610
+_020E9558:
+ sub r0, r5, r8
+ mov r1, r0, lsr #0x1f
+ rsb r0, r1, r0, lsl #0x1d
+ adds r7, r1, r0, ror #0x1d
+ moveq r7, #0x8
+ mov r6, #0x0
+ mov r2, #0x0
+ cmp r7, #0x0
+ ble _020E9594
+ mov r0, #0xa
+_020E9580:
+ ldrb r1, [r8], #0x1
+ add r2, r2, #0x1
+ cmp r2, r7
+ mla r6, r0, r6, r1
+ blt _020E9580
+_020E9594:
+ ldr r0, _020E9980 ; =0x02106E48
+ ldr r1, [sp, #0xc]
+ add r3, r0, r7, lsl #0x3
+ ldr r2, [r3, #-0x8]
+ ldr r0, [sp, #0x8]
+ ldr r3, [r3, #-0x4]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ mov r0, r6
+ bl _dfltu
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r9
+ bl _dadd
+_020E95D4: ; 0x020E95D4
+ cmp r6, #0x0
+ mov r6, r0
+ mov r10, r1
+ beq _020E95FC
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r10
+ bl _deq
+ beq _020E9610
+_020E95FC:
+ str r6, [sp, #0x8]
+ str r10, [sp, #0xc]
+ cmp r8, r5
+ sub r11, r11, r7
+ blo _020E9558
+_020E9610:
+ cmp r11, #0x0
+ bge _020E9654
+ rsb r0, r11, #0x0
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _ddiv
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ b _020E968C
+_020E9654:
+ mov r0, r11
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _dmul
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E968C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r11
+ bl ldexp
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bne _020E96C0
+ ldr r0, _020E9988 ; =0x7FEFFFFF
+ mvn r1, #0x0
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E96C0:
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x8a
+ add r4, sp, #0x0
+ mov r5, #0x0
+ bl __num2dec_internal
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __equals_dec
+_020E96E4: ; 0x020E96E4
+ cmp r0, #0x0
+ bne _020E9934
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __less_dec
+_020E96F8: ; 0x020E96F8
+ cmp r0, #0x0
+ movne r5, #0x1
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ cmp r5, #0x0
+ moveq r6, #0x1
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ movne r6, #0x0
+_020E971C:
+ cmp r6, #0x0
+ bne _020E9744
+ ldmia r4, {r0-r1}
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ stmia r4, {r0-r1}
+ bl __fpclassifyf
+ cmp r0, #0x2
+ beq _020E9934
+ b _020E975C
+_020E9744:
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ subs r1, r1, #0x1
+ sbc r0, r0, #0x0
+ str r1, [r4, #0x0]
+ str r0, [r4, #0x4]
+_020E975C:
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, sp, #0x64
+ bl __num2dec_internal
+_020E976C: ; 0x020E976C
+ cmp r5, #0x0
+ beq _020E9788
+ add r0, sp, #0x64
+ add r1, sp, #0xd6
+ bl __less_dec
+_020E9780: ; 0x020E9780
+ cmp r0, #0x0
+ beq _020E98AC
+_020E9788:
+ cmp r5, #0x0
+ bne _020E9864
+ add r0, sp, #0xd6
+ add r1, sp, #0x64
+ bl __less_dec
+_020E979C: ; 0x020E979C
+ cmp r0, #0x0
+ bne _020E9864
+ add r3, sp, #0x8a
+ add r5, sp, #0x3e
+ mov r2, #0x9
+_020E97B0:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E97B0
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x64
+ add r4, sp, #0x8a
+ strh r0, [r5, #0x0]
+ mov r2, #0x9
+_020E97E4:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r4, #0x0]
+ strh r0, [r4, #0x2]
+ add r4, r4, #0x4
+ subs r2, r2, #0x1
+ bne _020E97E4
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x3e
+ add r5, sp, #0x64
+ strh r0, [r4, #0x0]
+ mov r2, #0x9
+_020E9818:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E9818
+ ldrh r4, [r3, #0x0]
+ ldr r3, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ strh r4, [r5, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x0]
+ str r2, [sp, #0x4]
+ b _020E98AC
+_020E9864:
+ add r7, sp, #0x64
+ add r3, sp, #0x8a
+ mov r2, #0x9
+_020E9870:
+ ldrh r1, [r7, #0x0]
+ ldrh r0, [r7, #0x2]
+ add r7, r7, #0x4
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ subs r2, r2, #0x1
+ bne _020E9870
+ ldrh r2, [r7, #0x0]
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r2, [r3, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E971C
+_020E98AC:
+ add r0, sp, #0x3e
+ add r1, sp, #0xd6
+ add r2, sp, #0x8a
+ bl __minus_dec
+ add r0, sp, #0x18
+ add r1, sp, #0x64
+ add r2, sp, #0xd6
+ bl __minus_dec
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __equals_dec
+_020E98D8: ; 0x020E98D8
+ cmp r0, #0x0
+ beq _020E9910
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ and r1, r1, #0x1
+ and r0, r0, #0x0
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ beq _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E9934
+_020E9910:
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __less_dec
+_020E991C: ; 0x020E991C
+ cmp r0, #0x0
+ bne _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E9934:
+ ldrsb r0, [sp, #0xd6]
+ cmp r0, #0x0
+ beq _020E995C
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E995C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E996C: .word 0x3FF00000
+_020E9970: .word 0xBFF00000
+_020E9974: .word 0x02106B74
+_020E9978: .word 0x7FF00000
+_020E997C: .word 0x02106F5C
+_020E9980: .word 0x02106E48
+_020E9984: .word 0x40140000
+_020E9988: .word 0x7FEFFFFF
+
+ arm_func_start __msl_generic_count_bits64
+__msl_generic_count_bits64: ; 0x020E998C
+ mov r3, r0, lsr #0x1
+ ldr r2, _020E9A14 ; =0x55555555
+ orr r3, r3, r1, lsl #0x1f
+ and r3, r3, r2
+ subs r12, r0, r3
+ and r2, r2, r1, lsr #0x1
+ ldr r0, _020E9A18 ; =0x33333333
+ sbc r3, r1, r2
+ mov r1, r12, lsr #0x2
+ orr r1, r1, r3, lsl #0x1e
+ and r2, r12, r0
+ and r1, r1, r0
+ adds r2, r2, r1
+ and r1, r3, r0
+ and r0, r0, r3, lsr #0x2
+ adc r1, r1, r0
+ mov r0, r2, lsr #0x4
+ orr r0, r0, r1, lsl #0x1c
+ adds r2, r2, r0
+ ldr r0, _020E9A1C ; =0x0F0F0F0F
+ adc r1, r1, r1, lsr #0x4
+ and r3, r2, r0
+ and r2, r1, r0
+ mov r0, r3, lsr #0x8
+ orr r0, r0, r2, lsl #0x18
+ adds r1, r3, r0
+ adc r2, r2, r2, lsr #0x8
+ mov r0, r1, lsr #0x10
+ orr r0, r0, r2, lsl #0x10
+ adds r1, r1, r0
+ adc r0, r2, r2, lsr #0x10
+ adds r0, r1, r0
+ and r0, r0, #0xff
+ bx lr
+ .balign 4
+_020E9A14: .word 0x55555555
+_020E9A18: .word 0x33333333
+_020E9A1C: .word 0x0F0F0F0F
+
+arm_func_start __signbitf
+__signbitf:
+ stmdb sp!, {r0-r3}
+ ldr r0, [sp, #0x4]
+ and r0, r0, #0x80000000
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start __fpclassifyf
+__fpclassifyf: ; 0x020E9A34
+ stmdb sp!, {r0-r3}
+ ldr r2, [sp, #0x4]
+ ldr r0, _020E9A9C ; =0x7FF00000
+ ands r1, r2, r0
+ beq _020E9A70
+ cmp r1, r0
+ bne _020E9A90
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x2
+ bx lr
+_020E9A70:
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x5
+ moveq r0, #0x3
+ bx lr
+_020E9A90:
+ mov r0, #0x4
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E9A9C: .word 0x7FF00000
+_020E9AA0: .word 0x000FFFFF
+
+ arm_func_start scalbn
+scalbn: ; 0x020E9AA4
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r2
+ add r2, sp, #0x0
+ bl frexp
+ ldr r2, [sp, #0x0]
+ add r2, r2, r4
+ str r2, [sp, #0x0]
+ bl ldexp
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+
+ arm_func_start stricmp
+stricmp: ; 0x020E9AD0
+ stmdb sp!, {r3,lr}
+ ldr r3, _020E9B34 ; =0x0210420C
+_020E9AD8:
+ ldrb r2, [r0], #0x1
+ cmp r2, #0x0
+ blt _020E9AF0
+ cmp r2, #0x80
+ bge _020E9AF0
+ ldrb r2, [r3, r2]
+_020E9AF0:
+ ldrb lr, [r1], #0x1
+ and r12, r2, #0xff
+ cmp lr, #0x0
+ blt _020E9B0C
+ cmp lr, #0x80
+ bge _020E9B0C
+ ldrb lr, [r3, lr]
+_020E9B0C:
+ and r2, lr, #0xff
+ cmp r12, r2
+ mvncc r0, #0x0
+ ldmccia sp!, {r3,pc}
+_020E9B1C: ; 0x020E9B1C
+ movhi r0, #0x1
+ ldmhiia sp!, {r3,pc}
+_020E9B24: ; 0x020E9B24
+ cmp r12, #0x0
+ bne _020E9AD8
+ mov r0, #0x0
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020E9B34: .word 0x0210420C
+
+ arm_func_start strnicmp
+strnicmp: ; 0x020E9B38
+ ldr ip, _020E9B40 ; =stricmp
+ bx r12
+ .balign 4
+_020E9B40: .word stricmp
+
+arm_func_start _dadd
+_dadd:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi _020EA5DC
+_020E9B54:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020E9B70
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020E9B70:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020E9C6C
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020E9CB4
+_020E9BA8:
+ subs r4, r12, r4
+ beq _020E9C00
+ cmp r4, #0x20
+ ble _020E9BE4
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ adds r0, r0, r2
+ adcs r1, r1, #0x0
+ blo _020E9C28
+ b _020E9C0C
+_020E9BE4:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+_020E9C00:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9C28
+_020E9C0C:
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ orr r0, r4, r0, rrx
+ mov lr, r12, lsl #0x15
+ cmn lr, #0x200000
+ beq _020E9E38
+_020E9C28:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9C6C:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020E9CD8
+ orrs r4, r0, r1, lsl #0x1
+ bne _020E9E14
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020E9E00
+ cmn r4, #0x200000
+ bne _020E9E00
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9E00
+ b _020E9E14
+_020E9CB4:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020E9D44
+ orrs r4, r2, r3, lsl #0x1
+ bne _020E9E14
+ b _020E9E00
+_020E9CD8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9D18
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020E9CB4
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020E9BA8
+_020E9D18:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020E9DCC
+ cmn r4, #0x200000
+ bne _020E9DCC
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9E00
+ b _020E9E18
+_020E9D44:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9DDC
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ cmp r1, #0x0
+ bpl _020E9D68
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020E9BA8
+_020E9D68:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9D88
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ mov r0, r0, rrx
+ orr r0, r0, r4
+_020E9D88:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020E9DCC:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9DDC:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E00:
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E14:
+ mov r1, r3
+_020E9E18:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E28: ; 0x020E9E28
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E38:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020E9E58: .word 0x7FF00000
+
+arm_func_start _d2f
+_d2f:
+ and r2, r1, #0x80000000
+ mov r12, r1, lsr #0x14
+ bics r12, r12, #0x800
+ beq _020E9ED4
+ mov r3, r12, lsl #0x15
+ cmn r3, #0x200000
+ bhs _020E9EB8
+ subs r12, r12, #0x380
+ bls _020E9EE4
+ cmp r12, #0xff
+ bge _020E9F54
+ mov r1, r1, lsl #0xc
+ orr r3, r2, r1, lsr #0x9
+ orr r3, r3, r0, lsr #0x1d
+ movs r1, r0, lsl #0x3
+ orr r0, r3, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9EB8:
+ orrs r3, r0, r1, lsl #0xc
+ bne _020E9ECC
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020E9ECC:
+ mvn r0, #0x80000000
+ bx lr
+_020E9ED4:
+ orrs r3, r0, r1, lsl #0xc
+ bne _020E9F4C
+ mov r0, r2
+ bx lr
+_020E9EE4:
+ cmn r12, #0x17
+ beq _020E9F38
+ bmi _020E9F4C
+ mov r1, r1, lsl #0xb
+ orr r1, r1, #0x80000000
+ mov r3, r1, lsr #0x8
+ orr r3, r3, r0, lsr #0x1d
+ rsb r12, r12, #0x1
+ movs r1, r0, lsl #0x3
+ orr r0, r2, r3, lsr r12
+ rsb r12, r12, #0x20
+ mov r3, r3, lsl r12
+ orrne r3, r3, #0x1
+ movs r1, r3
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9F38:
+ orr r0, r0, r1, lsl #0xc
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+_020E9F4C:
+ mov r0, r2
+ bx lr
+_020E9F54:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+
+ arm_func_start _dfix
+_dfix: ; 0x020E9F60
+ bic r3, r1, #0x80000000
+ ldr r2, _020E9FA8 ; =0x0000041E
+ subs r2, r2, r3, lsr #0x14
+ ble _020E9F9C
+ cmp r2, #0x20
+ bge _020E9F94
+ mov r3, r1, lsl #0xb
+ orr r3, r3, #0x80000000
+ orr r3, r3, r0, lsr #0x15
+ cmp r1, #0x0
+ mov r0, r3, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020E9F94:
+ mov r0, #0x0
+ bx lr
+_020E9F9C:
+ mvn r0, r1, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
+ .balign 4
+_020E9FA8: .word 0x0000041E
+
+ arm_func_start _ll_ufrom_d
+_ll_ufrom_d: ; 0x020E9FAC
+ tst r1, #0x80000000
+ bne _020EA010
+ ldr r2, _020EA034 ; =0x0000043E
+ subs r2, r2, r1, lsr #0x14
+ blt _020EA028
+ cmp r2, #0x40
+ bge _020EA004
+ mov r12, r1, lsl #0xb
+ orr r12, r12, #0x80000000
+ orr r12, r12, r0, lsr #0x15
+ cmp r2, #0x20
+ ble _020E9FEC
+ sub r2, r2, #0x20
+ mov r1, #0x0
+ mov r0, r12, lsr r2
+ bx lr
+_020E9FEC:
+ mov r3, r0, lsl #0xb
+ mov r1, r12, lsr r2
+ mov r0, r3, lsr r2
+ rsb r2, r2, #0x20
+ orr r0, r0, r12, lsl r2
+ bx lr
+_020EA004:
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA010:
+ cmn r1, #0x100000
+ cmpeq r0, #0x0
+ bhi _020EA028
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA028:
+ mvn r1, #0x0
+ mvn r0, #0x0
+ bx lr
+ .balign 4
+_020EA034: .word 0x0000043E
+
+ arm_func_start _dflt
+_dflt: ; 0x020EA038
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ movs r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, r2, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+
+ arm_func_start _dfltu
+_dfltu: ; 0x020EA078
+ cmp r0, #0x0
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ bmi _020EA09C
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EA09C:
+ mov r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+
+ arm_func_start _dmul
+_dmul: ; 0x020EA0B4
+ stmdb sp!, {r4-r7,lr}
+ eor lr, r1, r3
+ and lr, lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ mov r1, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r6, r12, lsl #0x15
+ cmnne r6, #0x200000
+ beq _020EA1BC
+ orr r1, r1, #0x80000000
+ bic r12, r12, #0x800
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+_020EA108:
+ add r12, r4, r12
+ umull r5, r4, r0, r2
+ umull r7, r6, r0, r3
+ adds r4, r7, r4
+ adc r6, r6, #0x0
+ umull r7, r0, r1, r2
+ adds r4, r7, r4
+ adcs r0, r0, r6
+ umull r7, r2, r1, r3
+ adc r1, r2, #0x0
+ adds r0, r0, r7
+ adc r1, r1, #0x0
+ orrs r4, r4, r5
+ orrne r0, r0, #0x1
+ cmp r1, #0x0
+ blt _020EA154
+ sub r12, r12, #0x1
+ adds r0, r0, r0
+ adc r1, r1, r1
+_020EA154:
+ add r12, r12, #0x2
+ subs r12, r12, #0x400
+ bmi _020EA2F0
+ beq _020EA2F0
+ mov r6, r12, lsl #0x14
+ cmn r6, #0x100000
+ bmi _020EA3F0
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA1BC:
+ bics r12, r12, #0x800
+ beq _020EA218
+ orrs r6, r0, r1, lsl #0x1
+ bne _020EA3A4
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA1F8
+ cmn r5, #0x200000
+ bne _020EA390
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA390
+ b _020EA3A4
+_020EA1F8:
+ orrs r5, r3, r2
+ beq _020EA3B8
+ b _020EA390
+_020EA204:
+ bics r4, r4, #0x800
+ beq _020EA2AC
+ orrs r6, r2, r3, lsl #0x1
+ bne _020EA3A4
+ b _020EA390
+_020EA218:
+ orrs r6, r0, r1, lsl #0x1
+ beq _020EA280
+ mov r12, #0x1
+ cmp r1, #0x0
+ bne _020EA23C
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA258
+_020EA23C:
+ clz r6, r1
+ movs r1, r1, lsl r6
+ rsb r6, r6, #0x20
+ orr r1, r1, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov r0, r0, lsl r6
+ sub r12, r12, r6
+_020EA258:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+ b _020EA108
+_020EA280:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA404
+ cmn r5, #0x200000
+ bne _020EA404
+ orrs r6, r2, r3, lsl #0x1
+ beq _020EA3B8
+ b _020EA3A4
+_020EA2AC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA404
+ mov r4, #0x1
+ cmp r3, #0x0
+ bne _020EA2D0
+ sub r4, r4, #0x20
+ movs r3, r2
+ mov r2, #0x0
+ bmi _020EA108
+_020EA2D0:
+ clz r6, r3
+ movs r3, r3, lsl r6
+ rsb r6, r6, #0x20
+ orr r3, r3, r2, lsr r6
+ rsb r6, r6, #0x20
+ mov r2, r2, lsl r6
+ sub r4, r4, r6
+ b _020EA108
+_020EA2F0:
+ cmn r12, #0x34
+ beq _020EA388
+ bmi _020EA3E0
+ mov r2, r1
+ mov r3, r0
+ add r4, r12, #0x34
+ cmp r4, #0x20
+ movge r2, r3
+ movge r3, #0x0
+ subge r4, r4, #0x20
+ rsb r5, r4, #0x20
+ mov r2, r2, lsl r4
+ orr r2, r2, r3, lsr r5
+ movs r3, r3, lsl r4
+ orrne r2, r2, #0x1
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ cmp r2, #0x0
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA388:
+ orr r0, r0, r1, lsl #0x1
+ b _020EA3C8
+_020EA390:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3A4:
+ mov r1, r3
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3B8:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3C8:
+ movs r2, r0
+ mov r1, lr
+ mov r0, #0x0
+ addne r0, r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3E0:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3F0:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA404:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020EA414: .word 0x7FF00000
+
+ arm_func_start _dsqrt
+_dsqrt: ; 0x020EA418
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020EA5A8 ; =0x7FF00000
+ cmp r1, r2
+ bhs _020EA564
+ movs r12, r1, lsr #0x14
+ beq _020EA510
+ bic r1, r1, r2
+ orr r1, r1, #0x100000
+_020EA438:
+ movs r12, r12, asr #0x1
+ bhs _020EA44C
+ sub r12, r12, #0x1
+ movs r0, r0, lsl #0x1
+ adc r1, r1, r1
+_020EA44C:
+ movs r3, r0, lsl #0x1
+ adc r1, r1, r1
+ mov r2, #0x0
+ mov r4, #0x0
+ mov lr, #0x200000
+_020EA460:
+ add r6, r4, lr
+ cmp r6, r1
+ addle r4, r6, lr
+ suble r1, r1, r6
+ addle r2, r2, lr
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA460
+ mov r0, #0x0
+ mov r5, #0x0
+ cmp r1, r4
+ cmpeq r3, #0x80000000
+ blo _020EA4A8
+ subs r3, r3, #0x80000000
+ sbc r1, r1, r4
+ add r4, r4, #0x1
+ mov r0, #0x80000000
+_020EA4A8:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ mov lr, #0x40000000
+_020EA4B4:
+ add r6, r5, lr
+ cmp r4, r1
+ cmpeq r6, r3
+ bhi _020EA4D4
+ add r5, r6, lr
+ subs r3, r3, r6
+ sbc r1, r1, r4
+ add r0, r0, lr
+_020EA4D4:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA4B4
+ orrs r1, r1, r3
+ biceq r0, r0, #0x1
+ movs r1, r2, lsr #0x1
+ movs r0, r0, rrx
+ adcs r0, r0, #0x0
+ adc r1, r1, #0x0
+ add r1, r1, #0x20000000
+ sub r1, r1, #0x100000
+ add r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EA510:
+ cmp r1, #0x0
+ bne _020EA540
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ b _020EA438
+_020EA540:
+ clz r2, r1
+ movs r1, r1, lsl r2
+ rsb r2, r2, #0x2b
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r2
+ rsb r2, r2, #0x20
+ mov r0, r0, lsl r2
+ rsb r12, r2, #0x1
+ b _020EA438
+_020EA564:
+ tst r1, #0x80000000
+ beq _020EA580
+ bics r3, r1, #0x80000000
+ cmpeq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ b _020EA58C
+_020EA580:
+ orrs r2, r0, r1, lsl #0xc
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EA58C:
+ ldr r2, _020EA5AC ; =0x7FF80000
+ orr r1, r1, r2
+ ldr r3, _020EA5B0 ; =0x021D74A8
+ mov r4, #0x21
+ str r4, [r3, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EA5A8: .word 0x7FF00000
+_020EA5AC: .word 0x7FF80000
+_020EA5B0: .word 0x021D74A8
+
+ arm_func_start _drsb
+_drsb: ; 0x020EA5B4
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+arm_func_start _dsub
+_dsub:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi _020E9B54
+_020EA5DC:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020EA5FC
+ eor lr, lr, #0x80000000
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020EA5FC:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020EA800
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020EA848
+_020EA634:
+ subs r4, r12, r4
+ beq _020EA6DC
+ cmp r4, #0x20
+ ble _020EA670
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, #0x0
+ bmi _020EA698
+ b _020EA788
+_020EA670:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ bpl _020EA788
+_020EA698:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA6DC:
+ subs r0, r0, r2
+ sbc r1, r1, r3
+ orrs lr, r1, r0
+ beq _020EA96C
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bmi _020EA764
+ bne _020EA714
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA730
+_020EA714:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA730:
+ cmp r12, #0x0
+ bgt _020EA76C
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA764:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+_020EA76C:
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA788:
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bne _020EA7AC
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA7C8
+_020EA7AC:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA7C8:
+ cmp r12, #0x0
+ orrgt r12, r12, lr, lsr #0x14
+ bgt _020EA698
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA800:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020EA86C
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA948
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020EA934
+ cmn r4, #0x200000
+ bne _020EA934
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA95C
+ b _020EA948
+_020EA848:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020EA8E4
+ orrs r4, r2, r3, lsl #0x1
+ bne _020EA948
+ b _020EA934
+_020EA86C:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA8AC
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020EA848
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020EA634
+_020EA8AC:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020EA8D8
+ cmn r4, #0x200000
+ bne _020EA900
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA94C
+ b _020EA934
+_020EA8D8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA96C
+ b _020EA900
+_020EA8E4:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA910
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020EA634
+_020EA900:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA910:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA934:
+ ldr r1, _020EA97C ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA948:
+ mov r1, r3
+_020EA94C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA95C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA96C:
+ mov r1, #0x0
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020EA97C: .word 0x7FF00000
+
+ arm_func_start _fadd
+_fadd: ; 0x020EA980
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi _020EB7BC
+_020EA98C:
+ subs r12, r0, r1
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EAA20
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EAA60
+_020EA9C0:
+ subs r12, r3, r12
+ beq _020EA9D8
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+_020EA9D8:
+ adds r0, r0, r1
+ blo _020EA9F8
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r3, r3, #0x1
+ and r2, r3, #0xff
+ cmp r2, #0xff
+ beq _020EAB68
+_020EA9F8:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAA20:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EAA84
+ movs r0, r0, lsl #0x1
+ bne _020EAB94
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EAB88
+ cmp r12, #0xff
+ blt _020EAB88
+ cmp r1, #0x0
+ beq _020EAB88
+ b _020EAB94
+_020EAA60:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EAAE0
+_020EAA78:
+ movs r1, r1, lsl #0x1
+ bne _020EAB94
+ b _020EAB88
+_020EAA84:
+ movs r0, r0, lsl #0x1
+ beq _020EAABC
+ mov r3, #0x1
+ mov r0, r0, lsr #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EAAE0
+ cmp r12, #0xff
+ beq _020EAA78
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EA9C0
+_020EAABC:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r3, r3, #0xff
+ beq _020EAB48
+ cmp r3, #0xff
+ blt _020EAB48
+ cmp r0, #0x0
+ beq _020EAB88
+ b _020EAB80
+_020EAAE0:
+ movs r1, r1, lsl #0x1
+ beq _020EAB50
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ cmp r0, #0x0
+ bmi _020EA9C0
+ adds r0, r0, r1
+ blo _020EAB14
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r12, r12, #0x1
+_020EAB14:
+ cmp r0, #0x0
+ subge r12, r12, #0x1
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAB48:
+ mov r0, r1
+ bx lr
+_020EAB50:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EAB68:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB80:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB88:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB94:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB9C: ; 0x020EAB9C
+ mvn r0, #0x80000000
+ bx lr
+
+ arm_func_start _dgr
+_dgr: ; 0x020EABA4
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAC18
+ cmn r12, r3, lsl #0x1
+ bhs _020EAC2C
+_020EABB8:
+ orrs r12, r3, r1
+ bmi _020EABE8
+ cmp r1, r3
+ cmpeq r0, r2
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EABD4:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EABE8:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EAC18:
+ bne _020EABD4
+ cmp r0, #0x0
+ bhi _020EABD4
+ cmn r12, r3, lsl #0x1
+ blo _020EABB8
+_020EAC2C:
+ bne _020EABD4
+ cmp r2, #0x0
+ bhi _020EABD4
+ b _020EABB8
+
+ arm_func_start _dleq
+_dleq: ; 0x020EAC3C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EACBC
+ cmn r12, r3, lsl #0x1
+ bhs _020EACD0
+_020EAC50:
+ orrs r12, r3, r1
+ bmi _020EAC84
+ cmp r1, r3
+ cmpeq r0, r2
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EAC6C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAC84:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bne _020EACA8
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EACA8:
+ cmp r3, r1
+ cmpeq r2, r0
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EACBC:
+ bne _020EAC6C
+ cmp r0, #0x0
+ bhi _020EAC6C
+ cmn r12, r3, lsl #0x1
+ blo _020EAC50
+_020EACD0:
+ bne _020EAC6C
+ cmp r2, #0x0
+ bhi _020EAC6C
+ b _020EAC50
+
+ arm_func_start _dls
+_dls: ; 0x020EACE0
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAD58
+ cmn r12, r3, lsl #0x1
+ bhs _020EAD6C
+_020EACF4:
+ orrs r12, r3, r1
+ bmi _020EAD24
+ cmp r1, r3
+ cmpeq r0, r2
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD10:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAD24:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bne _020EAD44
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EAD44:
+ cmp r3, r1
+ cmpeq r2, r0
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD58:
+ bne _020EAD10
+ cmp r0, #0x0
+ bhi _020EAD10
+ cmn r12, r3, lsl #0x1
+ blo _020EACF4
+_020EAD6C:
+ bne _020EAD10
+ cmp r2, #0x0
+ bhi _020EAD10
+ b _020EACF4
+
+ arm_func_start _deq
+_deq: ; 0x020EAD7C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EADE4
+ cmn r12, r3, lsl #0x1
+ bhs _020EADF8
+_020EAD90:
+ orrs r12, r3, r1
+ bmi _020EADC0
+ cmp r1, r3
+ cmpeq r0, r2
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADAC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EADC0:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADE4:
+ bne _020EADAC
+ cmp r0, #0x0
+ bhi _020EADAC
+ cmn r12, r3, lsl #0x1
+ blo _020EAD90
+_020EADF8:
+ bne _020EADAC
+ cmp r2, #0x0
+ bhi _020EADAC
+ b _020EAD90
+
+ arm_func_start _dneq
+_dneq: ; 0x020EAE08
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAE70
+ cmn r12, r3, lsl #0x1
+ bhs _020EAE84
+_020EAE1C:
+ orrs r12, r3, r1
+ bmi _020EAE4C
+ cmp r1, r3
+ cmpeq r0, r2
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE38:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAE4C:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE70:
+ bne _020EAE38
+ cmp r0, #0x0
+ bhi _020EAE38
+ cmn r12, r3, lsl #0x1
+ blo _020EAE1C
+_020EAE84:
+ bne _020EAE38
+ cmp r2, #0x0
+ bhi _020EAE38
+ b _020EAE1C
+
+ arm_func_start _fgeq
+_fgeq: ; 0x020EAE94
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAEDC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movge r0, #0x1
+ movlt r0, #0x0
+ mrs r12, cpsr
+ biclt r12, r12, #0x20000000
+ orrge r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAEDC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fgr
+_fgr: ; 0x020EAEF0
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF38
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movgt r0, #0x1
+ movle r0, #0x0
+ mrs r12, cpsr
+ bicle r12, r12, #0x20000000
+ orrgt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF38:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fleq
+_fleq: ; 0x020EAF4C
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF9C
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movle r0, #0x1
+ movgt r0, #0x0
+ mrs r12, cpsr
+ orrgt r12, r12, #0x20000000
+ bicgt r12, r12, #0x40000000
+ bicle r12, r12, #0x20000000
+ orrle r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF9C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fls
+_fls: ; 0x020EAFB4
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAFFC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+ mrs r12, cpsr
+ orrge r12, r12, #0x20000000
+ biclt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAFFC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _feq
+_feq: ; 0x020EB010
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ blo _020EB064
+ cmp r3, r1, lsl #0x1
+ blo _020EB064
+ orr r3, r0, r1
+ movs r3, r3, lsl #0x1
+ moveq r0, #0x0
+ bne _020EB044
+ mrs r12, cpsr
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB044:
+ cmp r0, r1
+ movne r0, #0x1
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bicne r12, r12, #0x40000000
+ orreq r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB064:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _frdiv
+_frdiv: ; 0x020EB078
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fdiv
+_fdiv: ; 0x020EB084
+ stmdb sp!, {lr}
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ cmpne r3, #0xff
+ beq _020EB258
+ ands r12, r12, r1, lsr #0x17
+ cmpne r12, #0xff
+ beq _020EB294
+ orr r1, r1, #0x800000
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ bic lr, r1, #0xff000000
+_020EB0B4:
+ cmp r2, lr
+ movcc r2, r2, lsl #0x1
+ subcc r3, r3, #0x1
+ teq r0, r1
+ sub r0, pc, #0x94
+ ldrb r1, [r0, lr, lsr #0xf]
+ rsb lr, lr, #0x0
+ mov r0, lr, asr #0x1
+ mul r0, r1, r0
+ add r0, r0, #0x80000000
+ mov r0, r0, lsr #0x6
+ mul r0, r1, r0
+ mov r0, r0, lsr #0xe
+ mul r1, lr, r0
+ sub r12, r3, r12
+ mov r1, r1, lsr #0xc
+ mul r1, r0, r1
+ mov r0, r0, lsl #0xe
+ add r0, r0, r1, lsr #0xf
+ umull r1, r0, r2, r0
+ mov r3, r0
+ orrmi r0, r0, #0x80000000
+ adds r12, r12, #0x7e
+ bmi _020EB35C
+ cmp r12, #0xfe
+ bge _020EB410
+ add r0, r0, r12, lsl #0x17
+ mov r12, r1, lsr #0x1c
+ cmp r12, #0x7
+ beq _020EB238
+ add r0, r0, r1, lsr #0x1f
+ ldmia sp!, {lr}
+ bx lr
+_020EB138: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
+ .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
+ .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
+ .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
+ .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
+ .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
+ .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
+ .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
+ .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
+ .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
+ .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
+ .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
+ .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
+ .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
+ .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
+ .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
+ .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EB238:
+ mov r1, r3, lsl #0x1
+ add r1, r1, #0x1
+ rsb lr, lr, #0x0
+ mul r1, lr, r1
+ cmp r1, r2, lsl #0x18
+ addmi r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB258:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r3, #0x0
+ beq _020EB2B0
+ movs r0, r0, lsl #0x9
+ bne _020EB3F8
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB3E8
+ cmp r12, #0xff
+ blt _020EB3E8
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB3E0
+_020EB294:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r12, #0x0
+ beq _020EB314
+_020EB2A4:
+ movs r1, r1, lsl #0x9
+ bne _020EB3E0
+ b _020EB430
+_020EB2B0:
+ movs r2, r0, lsl #0x9
+ beq _020EB2E4
+ clz r3, r2
+ movs r2, r2, lsl r3
+ rsb r3, r3, #0x0
+ mov r2, r2, lsr #0x8
+ ands r12, r12, r1, lsr #0x17
+ beq _020EB33C
+ cmp r12, #0xff
+ beq _020EB2A4
+ orr r1, r1, #0x800000
+ bic lr, r1, #0xff000000
+ b _020EB0B4
+_020EB2E4:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB308
+ cmp r12, #0xff
+ blt _020EB430
+ cmp r1, #0x0
+ beq _020EB430
+ b _020EB3E0
+_020EB308:
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB430
+_020EB314:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ b _020EB0B4
+_020EB33C:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ b _020EB0B4
+_020EB35C:
+ and r0, r0, #0x80000000
+ cmn r12, #0x18
+ beq _020EB3D0
+ bmi _020EB428
+ add r1, r12, #0x17
+ mov r2, r2, lsl r1
+ rsb r12, r12, #0x0
+ mov r3, r3, lsr r12
+ orr r0, r0, r3
+ rsb lr, lr, #0x0
+ mul r1, lr, r3
+ cmp r1, r2
+ ldmeqia sp!, {lr}
+ bxeq lr
+ add r1, r1, lr
+ cmp r1, r2
+ beq _020EB3C4
+ addmi r0, r0, #0x1
+ subpl r1, r1, lr
+ add r1, lr, r1, lsl #0x1
+ cmp r1, r2, lsl #0x1
+ and r3, r0, #0x1
+ addmi r0, r0, #0x1
+ addeq r0, r0, r3
+ ldmia sp!, {lr}
+ bx lr
+_020EB3C4:
+ add r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3D0:
+ cmn r2, lr
+ addne r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3E0:
+ mov r0, r1
+ b _020EB3F8
+_020EB3E8:
+ mov r0, #0xff000000
+ orr r0, lr, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3F8:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB404:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB410:
+ tst r0, #0x80000000
+ mov r0, #0xff000000
+ movne r0, r0, asr #0x1
+ moveq r0, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB428:
+ ldmia sp!, {lr}
+ bx lr
+_020EB430:
+ mov r0, lr
+ ldmia sp!, {lr}
+ bx lr
+
+arm_func_start _f2d
+_f2d:
+ and r2, r0, #0x80000000
+ mov r12, r0, lsr #0x17
+ mov r3, r0, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB46C
+ cmp r12, #0xff
+ beq _020EB498
+_020EB458:
+ add r12, r12, #0x380
+ mov r0, r3, lsl #0x14
+ orr r1, r2, r3, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ bx lr
+_020EB46C:
+ cmp r3, #0x0
+ bne _020EB480
+ mov r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB480:
+ mov r3, r3, lsr #0x1
+ clz r12, r3
+ movs r3, r3, lsl r12
+ rsb r12, r12, #0x1
+ add r3, r3, r3
+ b _020EB458
+_020EB498:
+ cmp r3, #0x0
+ bhi _020EB4B0
+ ldr r1, _020EB4BC ; =0x7FF00000
+ orr r1, r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB4B0:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ bx lr
+ .balign 4
+_020EB4BC: .word 0x7FF00000
+
+ arm_func_start _ffix
+_ffix: ; 0x020EB4C0
+ bic r1, r0, #0x80000000
+ mov r2, #0x9e
+ subs r2, r2, r1, lsr #0x17
+ ble _020EB4E8
+ mov r1, r1, lsl #0x8
+ orr r1, r1, #0x80000000
+ cmp r0, #0x0
+ mov r0, r1, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020EB4E8:
+ mvn r0, r0, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
+
+ arm_func_start _ffixu
+_ffixu: ; 0x020EB4F4
+ tst r0, #0x80000000
+ bne _020EB518
+ mov r1, #0x9e
+ subs r1, r1, r0, lsr #0x17
+ blt _020EB52C
+ mov r2, r0, lsl #0x8
+ orr r0, r2, #0x80000000
+ mov r0, r0, lsr r1
+ bx lr
+_020EB518:
+ mov r2, #0xff000000
+ cmp r2, r0, lsl #0x1
+ movcs r0, #0x0
+ mvncc r0, #0x0
+ bx lr
+_020EB52C:
+ mvn r0, #0x0
+ bx lr
+
+ arm_func_start _fflt
+_fflt: ; 0x020EB534
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ bxeq lr
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x9e
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r3, r1, #0x7f
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+
+ arm_func_start _ffltu
+_ffltu: ; 0x020EB57C
+ cmp r0, #0x0
+ bxeq lr
+ mov r3, #0x9e
+ bmi _020EB598
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EB598:
+ ands r2, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r2, #0x80
+ bxeq lr
+ ands r1, r2, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+
+ arm_func_start _fmul
+_fmul: ; 0x020EB5C4
+ eor r2, r0, r1
+ and r2, r2, #0x80000000
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ mov r0, r0, lsl #0x8
+ cmpne r3, #0xff
+ beq _020EB640
+ orr r0, r0, #0x80000000
+ ands r12, r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ cmpne r12, #0xff
+ beq _020EB680
+ orr r1, r1, #0x80000000
+_020EB5F8:
+ add r12, r3, r12
+ umull r1, r3, r0, r1
+ movs r0, r3
+ addpl r0, r0, r0
+ subpl r12, r12, #0x1
+ subs r12, r12, #0x7f
+ bmi _020EB70C
+ cmp r12, #0xfe
+ bge _020EB778
+ ands r3, r0, #0xff
+ orr r0, r2, r0, lsr #0x8
+ add r0, r0, r12, lsl #0x17
+ tst r3, #0x80
+ bxeq lr
+ orrs r1, r1, r3, lsl #0x19
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB640:
+ cmp r3, #0x0
+ beq _020EB694
+ movs r0, r0, lsl #0x1
+ bne _020EB768
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB674
+ cmp r12, #0xff
+ blt _020EB75C
+ cmp r1, #0x0
+ beq _020EB75C
+ b _020EB768
+_020EB674:
+ cmp r1, #0x0
+ beq _020EB770
+ b _020EB75C
+_020EB680:
+ cmp r12, #0x0
+ beq _020EB6F0
+_020EB688:
+ movs r1, r1, lsl #0x1
+ bne _020EB768
+ b _020EB75C
+_020EB694:
+ movs r0, r0, lsl #0x1
+ beq _020EB6CC
+ mov r0, r0, lsr #0x1
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB6F0
+ cmp r12, #0xff
+ beq _020EB688
+ orr r1, r1, #0x80000000
+ b _020EB5F8
+_020EB6CC:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB79C
+ cmp r12, #0xff
+ blt _020EB79C
+ cmp r1, #0x0
+ beq _020EB770
+ b _020EB768
+_020EB6F0:
+ movs r1, r1, lsl #0x1
+ beq _020EB79C
+ mov r1, r1, lsr #0x1
+ clz r12, r1
+ movs r1, r1, lsl r12
+ rsb r12, r12, #0x1
+ b _020EB5F8
+_020EB70C:
+ cmn r12, #0x18
+ beq _020EB754
+ bmi _020EB794
+ cmp r1, #0x0
+ orrne r0, r0, #0x1
+ mov r3, r0
+ mov r0, r0, lsr #0x8
+ rsb r12, r12, #0x0
+ orr r0, r2, r0, lsr r12
+ rsb r12, r12, #0x18
+ movs r1, r3, lsl r12
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB754:
+ mov r0, r0, lsl #0x1
+ b _020EB784
+_020EB75C:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EB768:
+ mvn r0, #0x80000000
+ bx lr
+_020EB770:
+ mvn r0, #0x80000000
+ bx lr
+_020EB778:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EB784:
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+_020EB794:
+ mov r0, r2
+ bx lr
+_020EB79C:
+ mov r0, r2
+ bx lr
+
+ arm_func_start _frsb
+_frsb: ; 0x020EB7A4
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fsub
+_fsub: ; 0x020EB7B0
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi _020EA98C
+_020EB7BC:
+ subs r12, r0, r1
+ eorcc r12, r12, #0x80000000
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EB8D8
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EB918
+_020EB7F4:
+ subs r12, r3, r12
+ beq _020EB83C
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+ subs r0, r0, r1
+ bpl _020EB880
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB83C:
+ subs r0, r0, r1
+ beq _020EB9E4
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB870
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB870:
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB880:
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB8AC
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB8AC:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB8D8:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EB940
+ movs r0, r0, lsl #0x1
+ bne _020EBA18
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EBA0C
+ cmp r12, #0xff
+ blt _020EBA0C
+ cmp r1, #0x0
+ beq _020EBA20
+ b _020EBA18
+_020EB918:
+ cmp r12, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EB9A8
+_020EB930:
+ eor r2, r2, #0x80000000
+ movs r1, r1, lsl #0x1
+ bne _020EBA18
+ b _020EBA0C
+_020EB940:
+ movs r0, r0, lsl #0x1
+ beq _020EB978
+ mov r0, r0, lsr #0x1
+ mov r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB9A8
+ cmp r12, #0xff
+ beq _020EB930
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EB7F4
+_020EB978:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r2, r3, #0xff
+ beq _020EB99C
+ cmp r2, #0xff
+ blt _020EB9C4
+ cmp r0, #0x0
+ bne _020EBA04
+ b _020EBA0C
+_020EB99C:
+ cmp r0, #0x0
+ beq _020EB9E4
+ b _020EB9C4
+_020EB9A8:
+ movs r1, r1, lsl #0x1
+ beq _020EB9CC
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r12, r12, r2, lsr #0x17
+ orr r3, r3, r2, lsr #0x17
+ b _020EB7F4
+_020EB9C4:
+ mov r0, r1
+ bx lr
+_020EB9CC:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB9E4:
+ mov r0, #0x0
+ bx lr
+_020EB9EC: ; 0x020EB9EC
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EBA04:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA0C:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EBA18:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA20:
+ mvn r0, #0x80000000
+ bx lr
+
+ arm_func_start _ll_mod
+_ll_mod: ; 0x020EBA28
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, r1
+ orr r4, r4, #0x1
+ b _020EBA48
+
+ arm_func_start _ll_sdiv
+_ll_sdiv: ; 0x020EBA38
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ eor r4, r1, r3
+ mov r4, r4, asr #0x1
+ mov r4, r4, lsl #0x1
+_020EBA48:
+ orrs r5, r3, r2
+ bne _020EBA58
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA58:
+ mov r5, r0, lsr #0x1f
+ add r5, r5, r1
+ mov r6, r2, lsr #0x1f
+ add r6, r6, r3
+ orrs r6, r5, r6
+ bne _020EBA8C
+ mov r1, r2
+ bl _s32_div_f
+ ands r4, r4, #0x1
+ movne r0, r1
+ mov r1, r0, asr #0x1f
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA8C:
+ cmp r1, #0x0
+ bge _020EBA9C
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+_020EBA9C:
+ cmp r3, #0x0
+ bge _020EBAAC
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+_020EBAAC:
+ orrs r5, r1, r0
+ beq _020EBBD0
+ mov r5, #0x0
+ mov r6, #0x1
+ cmp r3, #0x0
+ bmi _020EBAD8
+_020EBAC4:
+ add r5, r5, #0x1
+ adds r2, r2, r2
+ adcs r3, r3, r3
+ bpl _020EBAC4
+ add r6, r6, r5
+_020EBAD8:
+ cmp r1, #0x0
+ blt _020EBAF8
+_020EBAE0:
+ cmp r6, #0x1
+ beq _020EBAF8
+ sub r6, r6, #0x1
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ bpl _020EBAE0
+_020EBAF8:
+ mov r7, #0x0
+ mov r12, #0x0
+ mov r11, #0x0
+ b _020EBB20
+_020EBB08:
+ orr r12, r12, #0x1
+ subs r6, r6, #0x1
+ beq _020EBB78
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adcs r7, r7, r7
+_020EBB20:
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ sbcs r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+_020EBB3C:
+ subs r6, r6, #0x1
+ beq _020EBB70
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adc r7, r7, r7
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ adc r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+ b _020EBB3C
+_020EBB70:
+ adds r0, r0, r2
+ adc r1, r1, r3
+_020EBB78:
+ ands r7, r4, #0x1
+ moveq r0, r12
+ moveq r1, r11
+ beq _020EBBB0
+ subs r7, r5, #0x20
+ movge r0, r1, lsr r7
+ bge _020EBBD4
+ rsb r7, r5, #0x20
+ mov r0, r0, lsr r5
+ orr r0, r0, r1, lsl r7
+ mov r1, r1, lsr r5
+ b _020EBBB0
+_020EBBA8: ; 0x020EBBA8
+ mov r0, r1, lsr r7
+ mov r1, #0x0
+_020EBBB0:
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBC0:
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBD0:
+ mov r0, #0x0
+_020EBBD4:
+ mov r1, #0x0
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+
+ arm_func_start _ll_udiv
+_ll_udiv: ; 0x020EBBE8
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x0
+ b _020EBBFC
+
+ arm_func_start _ull_mod
+_ull_mod: ; 0x020EBBF4
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x1
+_020EBBFC:
+ orrs r5, r3, r2
+ bne _020EBC0C
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBC0C:
+ orrs r5, r1, r3
+ bne _020EBAAC
+ mov r1, r2
+ bl _u32_div_not_0_f
+_020EBC1C: ; 0x020EBC1C
+ cmp r4, #0x0
+ movne r0, r1
+ mov r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+
+ arm_func_start _ll_mul
+_ll_mul: ; 0x020EBC30
+ stmdb sp!, {r4-r5,lr}
+ umull r5, r4, r0, r2
+ mla r4, r0, r3, r4
+ mla r4, r2, r1, r4
+ mov r1, r4
+ mov r0, r5
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start _ll_shl
+_ll_shl: ; 0x020EBC50
+ ands r2, r2, #0x3f
+ bxeq lr
+ subs r3, r2, #0x20
+ bge _020EBC74
+ rsb r3, r2, #0x20
+ mov r1, r1, lsl r2
+ orr r1, r1, r0, lsr r3
+ mov r0, r0, lsl r2
+ bx lr
+_020EBC74:
+ mov r1, r0, lsl r3
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start _s32_div_f
+_s32_div_f: ; 0x020EBC80
+ eor r12, r0, r1
+ and r12, r12, #0x80000000
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ addlt r12, r12, #0x1
+ cmp r1, #0x0
+ rsblt r1, r1, #0x0
+ beq _020EBE78
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ blo _020EBE78
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+_020EBE78:
+ ands r3, r12, #0x80000000
+ rsbne r0, r0, #0x0
+ ands r3, r12, #0x1
+ rsbne r1, r1, #0x0
+ bx lr
+
+ arm_func_start _u32_div_f
+_u32_div_f: ; 0x020EBE8C
+ cmp r1, #0x0
+ bxeq lr
+
+ arm_func_start _u32_div_not_0_f
+_u32_div_not_0_f:
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ bxcc lr
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+ bx lr
+
+ arm_func_start _drdiv
+_drdiv: ; 0x020EC070
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+ arm_func_start _ddiv
+_ddiv: ; 0x020EC088
+ stmdb sp!, {r4-r6,lr}
+ ldr lr, _020EC5C8 ; =0x00000FFE
+ eor r4, r1, r3
+ ands r12, lr, r1, lsr #0x13
+ cmpne r12, lr
+ beq _020EC434
+ bic r1, r1, lr, lsl #0x14
+ orr r1, r1, #0x100000
+ add r12, r12, r4, lsr #0x1f
+_020EC0AC:
+ ands r4, lr, r3, lsr #0x13
+ cmpne r4, lr
+ beq _020EC4CC
+ bic r3, r3, lr, lsl #0x14
+ orr r3, r3, #0x100000
+_020EC0C0:
+ sub r12, r12, r4
+ cmp r1, r3
+ cmpeq r0, r2
+ bhs _020EC0DC
+ adds r0, r0, r0
+ adc r1, r1, r1
+ sub r12, r12, #0x2
+_020EC0DC:
+ sub r4, pc, #0x24
+ ldrb lr, [r4, r3, lsr #0xc]
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ mov r4, #0x20000000
+ mla r5, lr, r3, r4
+ mov r6, r3, lsl #0xa
+ mov r5, r5, lsr #0x7
+ mul lr, r5, lr
+ orr r6, r6, r2, lsr #0x16
+ mov lr, lr, lsr #0xd
+ mul r5, lr, r6
+ mov r6, r1, lsl #0xa
+ orr r6, r6, r0, lsr #0x16
+ mov r5, r5, lsr #0x10
+ mul r5, lr, r5
+ mov lr, lr, lsl #0xe
+ add lr, lr, r5, lsr #0x10
+ umull r5, r6, lr, r6
+ umull r4, r5, r6, r2
+ mla r5, r3, r6, r5
+ mov r4, r4, lsr #0x1a
+ orr r4, r4, r5, lsl #0x6
+ add r4, r4, r0, lsl #0x2
+ umull lr, r5, r4, lr
+ mov r4, #0x0
+ adds r5, r5, r6, lsl #0x18
+ adc r4, r4, r6, lsr #0x8
+ cmp r12, #0x800
+ bge _020EC2C0
+ add r12, r12, #0x7f0
+ adds r12, r12, #0xc
+ bmi _020EC2D8
+ orr r1, r4, r12, lsl #0x1f
+ bic r12, r12, #0x1
+ add r1, r1, r12, lsl #0x13
+ tst lr, #0x80000000
+ bne _020EC1B0
+ rsbs r2, r2, #0x0
+ mov r4, r4, lsl #0x1
+ add r4, r4, r5, lsr #0x1f
+ mul lr, r2, r4
+ mov r6, #0x0
+ mov r4, r5, lsl #0x1
+ orr r4, r4, #0x1
+ umlal r6, lr, r4, r2
+ rsc r3, r3, #0x0
+ mla lr, r4, r3, lr
+ cmp lr, r0, lsl #0x15
+ bmi _020EC1B0
+ mov r0, r5
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1B0:
+ adds r0, r5, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1C0: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
+ .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
+ .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
+ .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
+ .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
+ .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
+ .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
+ .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
+ .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
+ .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
+ .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
+ .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
+ .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
+ .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
+ .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
+ .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EC2C0:
+ movs r1, r12, lsl #0x1f
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf00000
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC2D8:
+ mvn r6, r12, asr #0x1
+ cmp r6, #0x34
+ bgt _020EC424
+ beq _020EC400
+ cmp r6, #0x14
+ bge _020EC320
+ rsb r6, r6, #0x13
+ mov lr, r0, lsl r6
+ rsb r6, r6, #0x14
+ mov r0, r5, lsr r6
+ rsb r6, r6, #0x20
+ orr r0, r0, r4, lsl r6
+ rsb r6, r6, #0x20
+ mov r4, r4, lsr r6
+ orr r1, r4, r12, lsl #0x1f
+ mov r12, lr
+ mov lr, #0x0
+ b _020EC350
+_020EC320:
+ rsb r6, r6, #0x33
+ mov lr, r1, lsl r6
+ mov r1, r12, lsl #0x1f
+ rsb r6, r6, #0x20
+ orr r12, lr, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov lr, r0, lsl r6
+ mov r5, r5, lsr #0x15
+ orr r5, r5, r4, lsl #0xb
+ rsb r6, r6, #0x1f
+ mov r0, r5, lsr r6
+ mov r4, #0x0
+_020EC350:
+ rsbs r2, r2, #0x0
+ mul r4, r2, r4
+ mov r5, #0x0
+ umlal r5, r4, r2, r0
+ rsc r3, r3, #0x0
+ mla r4, r0, r3, r4
+ cmp r4, r12
+ cmpeq r5, lr
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ adds r5, r5, r2
+ adc r4, r4, r3
+ cmp r4, r12
+ bmi _020EC3F4
+ bne _020EC398
+ cmp r5, lr
+ beq _020EC3E4
+ blo _020EC3F4
+_020EC398:
+ subs r5, r5, r2
+ sbc r4, r4, r3
+_020EC3A0:
+ adds r5, r5, r5
+ adc r4, r4, r4
+ adds r5, r5, r2
+ adc r4, r4, r3
+ adds lr, lr, lr
+ adc r12, r12, r12
+ cmp r4, r12
+ bmi _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ cmp r5, lr
+ blo _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ tst r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EC3E4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC3F4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ b _020EC3A0
+_020EC400:
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ cmp r1, r3
+ cmpeq r0, r2
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ movne r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC424:
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC434:
+ orrs r5, r0, r1, lsl #0x1
+ beq _020EC558
+ cmp r12, lr
+ beq _020EC49C
+ movs r1, r1, lsl #0xc
+ beq _020EC478
+ clz r5, r1
+ movs r1, r1, lsl r5
+ sub r12, r12, r5
+ add r5, r12, #0x1f
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r5
+ rsb r5, r5, #0x20
+ mov r0, r0, lsl r5
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC478:
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC49C:
+ orrs r5, r0, r1, lsl #0xc
+ bne _020EC580
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ bhs _020EC4C0
+ and r5, r3, #0x80000000
+ eor r1, r5, r1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC4C0:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ b _020EC5B8
+_020EC4CC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC544
+ cmp r4, lr
+ beq _020EC52C
+ movs r3, r3, lsl #0xc
+ beq _020EC50C
+ clz r5, r3
+ movs r3, r3, lsl r5
+ sub r4, r4, r5
+ add r5, r4, #0x1f
+ mov r3, r3, lsr #0xb
+ orr r3, r3, r2, lsr r5
+ rsb r5, r5, #0x20
+ mov r2, r2, lsl r5
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC50C:
+ mvn r4, #0x13
+ clz r5, r2
+ movs r2, r2, lsl r5
+ sub r4, r4, r5
+ mov r3, r2, lsr #0xb
+ mov r2, r2, lsl #0x15
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC52C:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC544:
+ mov r1, r12, lsl #0x1f
+ orr r1, r1, lr, lsl #0x13
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC558:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ eor r1, r1, r3
+ and r1, r1, #0x80000000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC580:
+ tst r1, #0x80000
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5A0:
+ tst r3, #0x80000
+ beq _020EC5B8
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5B8:
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf80000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EC5C8: .word 0x00000FFE
+
+ arm_func_start _fp_init
+_fp_init: ; 0x020EC5CC
+ bx lr
+
+ arm_func_start sys_writec
+sys_writec: ; 0x020EC5D0
+ str lr, [sp, #-0x4]!
+ mov r1, r0
+ mov r0, #0x3
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_readc
+sys_readc: ; 0x020EC5E4
+ str lr, [sp, #-0x4]!
+ mov r1, #0x0
+ mov r0, #0x7
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_exit
+sys_exit: ; 0x020EC5F8
+ mov r1, #0x0
+ mov r0, #0x18
+ swi 0x123456
+ mov pc, lr
+
+ arm_func_start __read_console
+__read_console: ; 0x020EC608
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r2
+ ldr r5, [r6, #0x0]
+ mov r7, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC650
+_020EC624:
+ bl sys_readc
+ and r1, r0, #0xff
+ cmp r1, #0xd
+ strb r0, [r7, r4]
+ cmpne r1, #0xa
+ addeq r0, r4, #0x1
+ streq r0, [r6, #0x0]
+ beq _020EC650
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC624
+_020EC650:
+ mov r0, #0x0
+ ldmia sp!, {r3-r7,pc}
+
+ arm_func_start __write_console
+__write_console: ; 0x020EC658
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r2, #0x0]
+ mov r6, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC684
+_020EC670:
+ add r0, r6, r4
+ bl sys_writec
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC670
+_020EC684:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start __close_console
+__close_console: ; 0x020EC68C
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start __call_static_initializers
+__call_static_initializers: ; 0x020EC694
+ stmdb sp!, {r4,lr}
+ ldr r4, _020EC6BC ; =0x02104774
+ b _020EC6A8
+_020EC6A0:
+ blx r0
+ add r4, r4, #0x4
+_020EC6A8:
+ cmp r4, #0x0
+ ldrne r0, [r4, #0x0]
+ cmpne r0, #0x0
+ bne _020EC6A0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020EC6BC: .word 0x02104774
+
+ arm_func_start __destroy_global_chain
+__destroy_global_chain: ; 0x020EC6C0
+ stmdb sp!, {r3-r5,lr}
+ ldr r4, _020EC700 ; =0x021D74C8
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020EC6D4: ; 0x020EC6D4
+ mvn r5, #0x0
+_020EC6D8:
+ ldr r0, [r2, #0x0]
+ mov r1, r5
+ str r0, [r4, #0x0]
+ ldr r0, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ bne _020EC6D8
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020EC700: .word 0x021D74C8
+
+ arm_func_start _ExitProcess
+_ExitProcess: ; 0x020EC704
+ ldr ip, _020EC70C ; =sys_exit
+ bx r12
+ .balign 4
+_020EC70C: .word sys_exit
diff --git a/asm/WM_arm9.s b/asm/WM_arm9.s
new file mode 100644
index 00000000..0e5eb0c5
--- /dev/null
+++ b/asm/WM_arm9.s
@@ -0,0 +1,3744 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start WMi_GetMPReadyAIDs
+WMi_GetMPReadyAIDs: ; 0x020D7DE0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r1, _020D7E30 ; =0x021D5E2C
+ mov r4, r0
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ moveq r5, #0x0
+ beq _020D7E18
+ ldr r5, [r0, #0x4]
+ mov r1, #0x2
+ add r0, r5, #0x86
+ bl DC_InvalidateRange
+ ldrh r5, [r5, #0x86]
+_020D7E18:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D7E30: .word 0x021D5E2C
+
+ arm_func_start WM_GetConnectedAIDs
+WM_GetConnectedAIDs: ; 0x020D7E34
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020D7E64 ; =0x021D5E2C
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ ldrne r4, [r1, #0x14c]
+ moveq r4, #0x0
+ bl OS_RestoreInterrupts
+ mov r0, r4, lsl #0x10
+ mov r0, r0, lsr #0x10
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D7E64: .word 0x021D5E2C
+
+ arm_func_start WM_GetAID
+WM_GetAID: ; 0x020D7E68
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020D7E98 ; =0x021D5E2C
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ addne r1, r1, #0x100
+ ldrneh r4, [r1, #0x50]
+ moveq r4, #0x0
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D7E98: .word 0x021D5E2C
+
+ arm_func_start WMi_GetStatusAddress
+WMi_GetStatusAddress: ; 0x020D7E9C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl WMi_CheckInitialized
+_020D7EA8: ; 0x020D7EA8
+ cmp r0, #0x0
+ movne r0, #0x0
+ ldreq r0, _020D7EC8 ; =0x021D5E2C
+ ldreq r0, [r0, #0x0]
+ ldreq r0, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D7EC8: .word 0x021D5E2C
+
+ arm_func_start WmClearFifoRecvFlag
+WmClearFifoRecvFlag: ; 0x020D7ECC
+ ldr r1, _020D7EE4 ; =0x027FFF96
+ ldrh r0, [r1, #0x0]
+ ands r2, r0, #0x1
+ bicne r0, r0, #0x1
+ strneh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020D7EE4: .word 0x027FFF96
+
+ arm_func_start WmReceiveFifo
+WmReceiveFifo: ; 0x020D7EE8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ ldr r0, _020D82B0 ; =0x021D5E2C
+ cmp r2, #0x0
+ ldr r8, [r0, #0x0]
+ mov r10, r1
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ ldr r0, [r8, #0x10]
+ mov r1, #0x100
+ bl DC_InvalidateRange
+ ldrh r0, [r8, #0x16]
+ cmp r0, #0x0
+ bne _020D7F30
+ ldr r0, [r8, #0x4]
+ mov r1, #0x800
+ bl DC_InvalidateRange
+_020D7F30:
+ ldr r0, [r8, #0x10]
+ cmp r10, r0
+ beq _020D7F48
+ mov r0, r10
+ mov r1, #0x100
+ bl DC_InvalidateRange
+_020D7F48:
+ ldrh r0, [r10, #0x0]
+ cmp r0, #0x2c
+ blo _020D8000
+ cmp r0, #0x80
+ bne _020D7F84
+ ldrh r0, [r10, #0x2]
+ cmp r0, #0x13
+ bne _020D7F6C
+ bl OS_Terminate
+_020D7F6C:
+ ldr r1, [r8, #0xc8]
+ cmp r1, #0x0
+ beq _020D8268
+ mov r0, r10
+ blx r1
+ b _020D8268
+_020D7F84:
+ cmp r0, #0x82
+ bne _020D7FD8
+ ldrh r0, [r10, #0x6]
+ add r1, r8, r0, lsl #0x2
+ ldr r0, [r1, #0xcc]
+ cmp r0, #0x0
+ beq _020D8268
+ ldr r0, [r1, #0x10c]
+ str r0, [r10, #0x1c]
+ ldr r0, [r8, #0x14c]
+ strh r0, [r10, #0x22]
+ ldr r1, [r8, #0x4]
+ ldr r0, [r10, #0x8]
+ ldrh r1, [r1, #0x72]
+ bl DC_InvalidateRange
+ ldrh r1, [r10, #0x6]
+ mov r0, r10
+ add r1, r8, r1, lsl #0x2
+ ldr r1, [r1, #0xcc]
+ blx r1
+ b _020D8268
+_020D7FD8:
+ cmp r0, #0x81
+ bne _020D8268
+ mov r0, #0xf
+ strh r0, [r10, #0x0]
+ ldr r1, [r10, #0x1c]
+ cmp r1, #0x0
+ beq _020D8268
+ mov r0, r10
+ blx r1
+ b _020D8268
+_020D8000:
+ cmp r0, #0xe
+ bne _020D8040
+ ldrh r1, [r10, #0x4]
+ ldr r0, _020D82B4 ; =0x0000FFF5
+ add r0, r1, r0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r0, #0x1
+ bhi _020D8040
+ ldrh r0, [r10, #0x2]
+ cmp r0, #0x0
+ bne _020D8040
+ ldr r1, [r8, #0x4]
+ ldr r0, [r10, #0x8]
+ ldrh r1, [r1, #0x72]
+ bl DC_InvalidateRange
+_020D8040:
+ ldrh r1, [r10, #0x0]
+ cmp r1, #0x2
+ bne _020D8088
+ ldrh r0, [r10, #0x2]
+ cmp r0, #0x0
+ bne _020D8088
+ add r0, r8, r1, lsl #0x2
+ ldr r4, [r0, #0x18]
+ bl WM_Finish
+_020D8064: ; 0x020D8064
+ cmp r4, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ mov r0, r10
+ blx r4
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D8088:
+ add r0, r8, r1, lsl #0x2
+ ldr r1, [r0, #0x18]
+ cmp r1, #0x0
+ beq _020D80B8
+ mov r0, r10
+ blx r1
+ ldr r0, _020D82B8 ; =0x021D5E28
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+_020D80B8:
+ ldrh r0, [r10, #0x0]
+ cmp r0, #0x8
+ beq _020D80CC
+ cmp r0, #0xc
+ bne _020D8268
+_020D80CC:
+ cmp r0, #0x8
+ bne _020D8100
+ add r0, r10, #0xa
+ str r0, [sp, #0x0]
+ ldrh r0, [r10, #0x2c]
+ add r11, r10, #0x14
+ ldrh r7, [r10, #0x8]
+ ldrh r6, [r10, #0x10]
+ ldrh r4, [r10, #0x12]
+ str r0, [sp, #0x4]
+ ldrh r9, [r10, #0x2e]
+ mov r5, #0x0
+ b _020D8130
+_020D8100:
+ cmp r0, #0xc
+ bne _020D8130
+ ldrh r0, [r10, #0x16]
+ mov r6, #0x0
+ ldrh r7, [r10, #0x8]
+ str r0, [sp, #0x4]
+ add r0, r10, #0x10
+ ldrh r5, [r10, #0xa]
+ ldrh r4, [r10, #0xc]
+ ldrh r9, [r10, #0x18]
+ mov r11, r6
+ str r0, [sp, #0x0]
+_020D8130:
+ cmp r7, #0x7
+ beq _020D8148
+ cmp r7, #0x9
+ beq _020D8148
+ cmp r7, #0x1a
+ bne _020D8268
+_020D8148:
+ cmp r7, #0x7
+ ldreq r1, [r8, #0x14c]
+ moveq r0, #0x1
+ orreq r0, r1, r0, lsl r6
+ streq r0, [r8, #0x14c]
+ movne r0, #0x1
+ mvnne r0, r0, lsl r6
+ ldrne r1, [r8, #0x14c]
+ add r3, r8, #0x100
+ andne r0, r1, r0
+ strne r0, [r8, #0x14c]
+ ldr r0, _020D82BC ; =0x021D5E78
+ mov r1, #0x0
+ mov r2, #0x44
+ strh r5, [r3, #0x50]
+ bl MI_CpuFill8
+ ldr r3, _020D82BC ; =0x021D5E78
+ mov r1, #0x0
+ mov r2, #0x82
+ strh r2, [r3, #0x0]
+ strh r7, [r3, #0x4]
+ strh r6, [r3, #0x12]
+ strh r5, [r3, #0x20]
+ strh r1, [r3, #0x2]
+ str r1, [r3, #0x8]
+ str r1, [r3, #0xc]
+ strh r1, [r3, #0x10]
+ ldr r1, [r8, #0x14c]
+ ldr r2, _020D82C0 ; =0x0000FFFF
+ strh r1, [r3, #0x22]
+ strh r2, [r3, #0x1a]
+ ldr r0, [sp, #0x0]
+ ldr r1, _020D82C4 ; =0x021D5E8C
+ mov r2, #0x6
+ strh r4, [r3, #0x3c]
+ bl MI_CpuCopy8
+_020D81D8: ; 0x020D81D8
+ cmp r11, #0x0
+ beq _020D81F4
+ ldr r1, _020D82C8 ; =0x021D5E9C
+ mov r0, r11
+ mov r2, #0x18
+ bl MIi_CpuCopy16
+ b _020D8204
+_020D81F4:
+ ldr r1, _020D82C8 ; =0x021D5E9C
+ mov r0, #0x0
+ mov r2, #0x18
+ bl MIi_CpuClear16
+_020D8204:
+ cmp r5, #0x0
+ ldreq r1, [sp, #0x4]
+ ldr r0, _020D82BC ; =0x021D5E78
+ movne r1, r9
+ cmp r5, #0x0
+ ldrne r9, [sp, #0x4]
+ ldr r5, _020D82BC ; =0x021D5E78
+ strh r1, [r0, #0x40]
+ mov r4, #0x0
+ strh r9, [r5, #0x42]
+_020D822C:
+ strh r4, [r5, #0x6]
+ add r2, r8, r4, lsl #0x2
+ ldr r0, [r2, #0xcc]
+ cmp r0, #0x0
+ beq _020D8254
+ ldr r1, [r2, #0x10c]
+ mov r0, r5
+ str r1, [r5, #0x1c]
+ ldr r1, [r2, #0xcc]
+ blx r1
+_020D8254:
+ add r0, r4, #0x1
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0x10
+ cmp r4, #0x10
+ blo _020D822C
+_020D8268:
+ ldr r0, [r8, #0x10]
+ mov r1, #0x100
+ bl DC_InvalidateRange
+ bl WmClearFifoRecvFlag
+ ldr r0, [r8, #0x10]
+ cmp r10, r0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ ldrh r2, [r10, #0x0]
+ mov r0, r10
+ mov r1, #0x100
+ orr r2, r2, #0x8000
+ strh r2, [r10, #0x0]
+ bl DC_StoreRange
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D82B0: .word 0x021D5E2C
+_020D82B4: .word 0x0000FFF5
+_020D82B8: .word 0x021D5E28
+_020D82BC: .word 0x021D5E78
+_020D82C0: .word 0x0000FFFF
+_020D82C4: .word 0x021D5E8C
+_020D82C8: .word 0x021D5E9C
+
+ arm_func_start WMi_CheckStateEx
+WMi_CheckStateEx:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl WMi_CheckInitialized
+_020D82DC: ; 0x020D82DC
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ addne sp, sp, #0x10
+ bxne lr
+ ldr r0, _020D8370 ; =0x021D5E2C
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl DC_InvalidateRange
+ ldr r0, _020D8370 ; =0x021D5E2C
+ add r1, sp, #0x8
+ ldr r2, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r2, [r2, #0x4]
+ cmp r0, #0x0
+ bic r1, r1, #0x3
+ addeq sp, sp, #0x4
+ add r12, r1, #0x4
+ ldrh r3, [r2, #0x0]
+ mov r0, #0x3
+ ldmeqia sp!, {lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ mov r2, #0x0
+_020D8340:
+ add r12, r12, #0x4
+ ldr r1, [r12, #-0x4]
+ cmp r1, r3
+ ldr r1, [sp, #0x8]
+ moveq r0, r2
+ subs r1, r1, #0x1
+ str r1, [sp, #0x8]
+ bne _020D8340
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D8370: .word 0x021D5E2C
+
+ arm_func_start WMi_CheckIdle
+WMi_CheckIdle:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl WMi_CheckInitialized
+_020D8380: ; 0x020D8380
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r0, _020D83CC ; =0x021D5E2C
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ bl DC_InvalidateRange
+ ldr r0, _020D83CC ; =0x021D5E2C
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x1
+ movls r0, #0x3
+ movhi r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D83CC: .word 0x021D5E2C
+
+ arm_func_start WMi_CheckInitialized
+WMi_CheckInitialized:
+ ldr r0, _020D83E8 ; =0x021D5E28
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ movne r0, #0x0
+ moveq r0, #0x3
+ bx lr
+ .balign 4
+_020D83E8: .word 0x021D5E28
+
+ arm_func_start WMi_GetSystemWork
+WMi_GetSystemWork: ; 0x020D83EC
+ ldr r0, _020D83F8 ; =0x021D5E2C
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D83F8: .word 0x021D5E2C
+
+ arm_func_start WMi_SendCommandDirect
+WMi_SendCommandDirect:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r4, r1
+ bl WmGetCommandBuffer4Arm7
+ movs r5, r0
+ moveq r0, #0x8
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MI_CpuCopy8
+ mov r0, r5
+ mov r1, r4
+ bl DC_StoreRange
+ mov r1, r5
+ mov r0, #0xa
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ mov r4, r0
+ ldr r0, _020D8470 ; =0x021D5E30
+ mov r1, r5
+ mov r2, #0x1
+ bl OS_SendMessage
+_020D845C: ; 0x020D845C
+ cmp r4, #0x0
+ movlt r0, #0x8
+ movge r0, #0x2
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D8470: .word 0x021D5E30
+
+ arm_func_start WMi_SendCommand
+WMi_SendCommand:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ bl WmGetCommandBuffer4Arm7
+ movs r5, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x8
+ ldmeqia sp!, {r4-r5,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ strh r4, [r5, #0x0]
+ ldrh r2, [sp, #0x14]
+ add r0, sp, #0x14
+ bic r0, r0, #0x3
+ mov r3, #0x0
+ cmp r2, #0x0
+ add r4, r0, #0x4
+ ble _020D84DC
+_020D84C0:
+ add r4, r4, #0x4
+ ldr r1, [r4, #-0x4]
+ add r0, r5, r3, lsl #0x2
+ add r3, r3, #0x1
+ str r1, [r0, #0x4]
+ cmp r3, r2
+ blt _020D84C0
+_020D84DC:
+ mov r0, r5
+ mov r1, #0x100
+ bl DC_StoreRange
+ mov r1, r5
+ mov r0, #0xa
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+ mov r4, r0
+ ldr r0, _020D8528 ; =0x021D5E30
+ mov r1, r5
+ mov r2, #0x1
+ bl OS_SendMessage
+_020D850C: ; 0x020D850C
+ cmp r4, #0x0
+ movlt r0, #0x8
+ movge r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D8528: .word 0x021D5E30
+
+ arm_func_start WmGetCommandBuffer4Arm7
+WmGetCommandBuffer4Arm7: ; 0x020D852C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D859C ; =0x021D5E30
+ add r1, sp, #0x0
+ mov r2, #0x0
+ bl OS_ReceiveMessage
+_020D8544: ; 0x020D8544
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r0, [sp, #0x0]
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r1, [sp, #0x0]
+ ldrh r0, [r1, #0x0]
+ ands r0, r0, #0x8000
+ addne sp, sp, #0x4
+ movne r0, r1
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r0, _020D859C ; =0x021D5E30
+ mov r2, #0x1
+ bl OS_JamMessage
+_020D858C: ; 0x020D858C
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D859C: .word 0x021D5E30
+
+ arm_func_start WMi_SetCallbackTable
+WMi_SetCallbackTable: ; 0x020D85A0
+ ldr r2, _020D85B4 ; =0x021D5E2C
+ ldr r2, [r2, #0x0]
+ add r0, r2, r0, lsl #0x2
+ str r1, [r0, #0x18]
+ bx lr
+ .balign 4
+_020D85B4: .word 0x021D5E2C
+
+ arm_func_start WM_Finish
+WM_Finish:
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl WMi_CheckInitialized
+_020D85C8: ; 0x020D85C8
+ cmp r0, #0x0
+ beq _020D85E4
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x3
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D85E4:
+ mov r0, #0x1
+ mov r1, #0x0
+ bl WMi_CheckStateEx
+_020D85F0: ; 0x020D85F0
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ bl WmClearFifoRecvFlag
+ mov r0, #0xa
+ mov r1, #0x0
+ bl PXI_SetFifoRecvCallback
+ ldr r2, _020D8634 ; =0x021D5E2C
+ mov r3, #0x0
+ ldr r1, _020D8638 ; =0x021D5E28
+ mov r0, r4
+ str r3, [r2, #0x0]
+ strh r3, [r1, #0x0]
+ bl OS_RestoreInterrupts
+_020D8628: ; 0x020D8628
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D8634: .word 0x021D5E2C
+_020D8638: .word 0x021D5E28
+
+ arm_func_start WmInitCore
+WmInitCore:
+ stmdb sp!, {r4-r10,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020D881C ; =0x021D5E28
+ mov r4, r0
+ ldrh r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020D8674
+ bl OS_RestoreInterrupts
+ mov r0, #0x3
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D8674:
+ cmp r6, #0x0
+ bne _020D868C
+ bl OS_RestoreInterrupts
+ mov r0, #0x6
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D868C:
+ cmp r5, #0x3
+ bls _020D86A4
+ bl OS_RestoreInterrupts
+ mov r0, #0x6
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D86A4:
+ ands r1, r6, #0x1f
+ beq _020D86BC
+ bl OS_RestoreInterrupts
+ mov r0, #0x6
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D86BC:
+ bl PXI_Init
+ mov r0, #0xa
+ mov r1, #0x1
+ bl PXI_IsCallbackReady
+_020D86CC: ; 0x020D86CC
+ cmp r0, #0x0
+ bne _020D86E8
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x4
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020D86E8:
+ mov r0, r6
+ mov r1, r7
+ bl DC_InvalidateRange
+ mov r0, r5
+ mov r1, r6
+ mov r3, r7
+ mov r2, #0x0
+ bl MI_DmaFill32
+ ldr r0, _020D8820 ; =0x021D5E2C
+ add r1, r6, #0x200
+ str r6, [r0, #0x0]
+ str r1, [r6, #0x0]
+ ldr r2, [r0, #0x0]
+ ldr r1, [r2, #0x0]
+ add r1, r1, #0x300
+ str r1, [r2, #0x4]
+ ldr r2, [r0, #0x0]
+ ldr r1, [r2, #0x4]
+ add r1, r1, #0x800
+ str r1, [r2, #0xc]
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0xc]
+ add r0, r0, #0x100
+ str r0, [r1, #0x10]
+ bl WmClearFifoRecvFlag
+ ldr r1, _020D8820 ; =0x021D5E2C
+ mov r3, #0x0
+ ldr r0, [r1, #0x0]
+ strh r5, [r0, #0x14]
+ ldr r0, [r1, #0x0]
+ str r3, [r0, #0x14c]
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x100
+ strh r3, [r0, #0x50]
+ mov r2, r3
+_020D8774:
+ ldr r0, [r1, #0x0]
+ add r0, r0, r3, lsl #0x2
+ str r2, [r0, #0xcc]
+ ldr r0, [r1, #0x0]
+ add r0, r0, r3, lsl #0x2
+ add r3, r3, #0x1
+ str r2, [r0, #0x10c]
+ cmp r3, #0x10
+ blt _020D8774
+ ldr r0, _020D8824 ; =0x021D5E30
+ ldr r1, _020D8828 ; =0x021D5E50
+ mov r2, #0xa
+ bl OS_InitMessageQueue
+ ldr sb, _020D882C ; =0x021D5EC0
+ mov r10, #0x0
+ ldr r6, _020D8824 ; =0x021D5E30
+ mov r8, #0x8000
+ mov r7, #0x2
+ mov r5, #0x1
+_020D87C0:
+ mov r0, r9
+ mov r1, r7
+ strh r8, [r9, #0x0]
+ bl DC_StoreRange
+ mov r0, r6
+ mov r1, r9
+ mov r2, r5
+ bl OS_SendMessage
+ add r10, r10, #0x1
+ cmp r10, #0xa
+ add r9, r9, #0x100
+ blt _020D87C0
+ ldr r1, _020D8830 ; =WmReceiveFifo
+ mov r0, #0xa
+ bl PXI_SetFifoRecvCallback
+ ldr r1, _020D881C ; =0x021D5E28
+ mov r2, #0x1
+ mov r0, r4
+ strh r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+_020D8810: ; 0x020D8810
+ mov r0, #0x0
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020D881C: .word 0x021D5E28
+_020D8820: .word 0x021D5E2C
+_020D8824: .word 0x021D5E30
+_020D8828: .word 0x021D5E50
+_020D882C: .word 0x021D5EC0
+_020D8830: .word WmReceiveFifo
+
+ arm_func_start WM_Init
+WM_Init:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0xf00
+ bl WmInitCore
+_020D8844: ; 0x020D8844
+ cmp r0, #0x0
+ ldreq r1, _020D8864 ; =0x021D5E2C
+ moveq r2, #0x0
+ ldreq r1, [r1, #0x0]
+ streqh r2, [r1, #0x16]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D8864: .word 0x021D5E2C
+
+ arm_func_start WM_GetNextTgid
+WM_GetNextTgid: ; 0x020D8868
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+
+ arm_func_start FUN_020D8870
+FUN_020D8870: ; 0x020D8870
+ ldr r0, _020D88DC ; =0x02106A54
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x10000
+ bne _020D88B0
+ bl RTC_Init
+_020D8884: ; 0x020D8884
+ add r0, sp, #0x0
+ bl RTC_GetTime
+_020D888C: ; 0x020D888C
+ cmp r0, #0x0
+ bne _020D88B0
+ ldr r2, [sp, #0x8]
+ ldr r0, [sp, #0x4]
+ ldr r1, _020D88DC ; =0x02106A54
+ add r0, r2, r0, lsl #0x8
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ str r0, [r1, #0x0]
+_020D88B0:
+ ldr r1, _020D88DC ; =0x02106A54
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x1
+ mov r0, r0, lsl #0x10
+ mov r2, r0, lsr #0x10
+ mov r0, r2, lsl #0x10
+ str r2, [r1, #0x0]
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D88DC: .word 0x02106A54
+
+ arm_func_start WM_GetOtherElements
+WM_GetOtherElements: ; 0x020D88E0
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x88
+ ldrh r2, [r1, #0x3c]
+ mov lr, r0
+ cmp r2, #0x0
+ beq _020D892C
+ mov r0, #0x0
+ add r5, sp, #0x0
+ strb r0, [sp, #0x0]
+ mov r4, #0x8
+_020D8908:
+ ldmia r5!, {r0-r3}
+ stmia lr!, {r0-r3}
+ subs r4, r4, #0x1
+ bne _020D8908
+ ldr r0, [r5, #0x0]
+ add sp, sp, #0x88
+ str r0, [lr, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D892C:
+ ldrh r0, [r1, #0x3e]
+ strb r0, [sp, #0x0]
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x0
+ bne _020D896C
+ add r5, sp, #0x0
+ mov r4, #0x8
+_020D8948:
+ ldmia r5!, {r0-r3}
+ stmia lr!, {r0-r3}
+ subs r4, r4, #0x1
+ bne _020D8948
+ ldr r0, [r5, #0x0]
+ add sp, sp, #0x88
+ str r0, [lr, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D896C:
+ cmp r0, #0x10
+ movhi r0, #0x10
+ strhib r0, [sp, #0x0]
+ ldrh r2, [r1, #0x0]
+ ldrb r3, [sp, #0x0]
+ mov r0, #0x0
+ mov r2, r2, lsl #0x1
+ sub r4, r2, #0x40
+ cmp r3, #0x0
+ add r3, r1, #0x40
+ mov r2, r0
+ and r1, r4, #0xff
+ ble _020D8A20
+ add r12, sp, #0x0
+_020D89A4:
+ ldrb r5, [r3, #0x0]
+ add r6, r12, r2, lsl #0x3
+ add r4, r3, #0x2
+ strb r5, [r6, #0x4]
+ ldrb r5, [r3, #0x1]
+ strb r5, [r6, #0x5]
+ str r4, [r6, #0x8]
+ ldrb r4, [r6, #0x5]
+ add r4, r4, #0x2
+ and r5, r4, #0xff
+ add r0, r0, r5
+ and r0, r0, #0xff
+ cmp r0, r1
+ bls _020D8A0C
+ mov r0, #0x0
+ strb r0, [sp, #0x0]
+ mov r4, #0x8
+_020D89E8:
+ ldmia r12!, {r0-r3}
+ stmia lr!, {r0-r3}
+ subs r4, r4, #0x1
+ bne _020D89E8
+ ldr r0, [r12, #0x0]
+ add sp, sp, #0x88
+ str r0, [lr, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D8A0C:
+ ldrb r4, [sp, #0x0]
+ add r2, r2, #0x1
+ add r3, r3, r5
+ cmp r2, r4
+ blt _020D89A4
+_020D8A20:
+ add r4, sp, #0x0
+ mov r12, #0x8
+_020D8A28:
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ subs r12, r12, #0x1
+ bne _020D8A28
+ ldr r0, [r4, #0x0]
+ str r0, [lr, #0x0]
+ add sp, sp, #0x88
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start WM_GetDispersionScanPeriod
+WM_GetDispersionScanPeriod: ; 0x020D8A4C
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ add r0, sp, #0x0
+ bl OS_GetMacAddress
+ mov r2, #0x0
+ add r1, sp, #0x0
+ mov r3, r2
+_020D8A68:
+ ldrb r0, [r1, #0x0]
+ add r2, r2, #0x1
+ cmp r2, #0x6
+ add r0, r3, r0
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ add r1, r1, #0x1
+ blt _020D8A68
+ ldr r0, _020D8AE4 ; =0x027FFC3C
+ mov r1, #0xd
+ ldr r0, [r0, #0x0]
+ ldr r2, _020D8AE8 ; =0x66666667
+ add r0, r3, r0
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ mul r0, r3, r1
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ smull r0, r1, r2, r3
+ mov r1, r1, asr #0x2
+ mov r0, r3, lsr #0x1f
+ ldr r2, _020D8AEC ; =0x0000000A
+ add r1, r0, r1
+ smull r0, r1, r2, r1
+ sub r1, r3, r0
+ add r0, r1, #0x1e
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D8AE4: .word 0x027FFC3C
+_020D8AE8: .word 0x66666667
+_020D8AEC: .word 0x0000000A
+
+ arm_func_start WM_GetDispersionBeaconPeriod
+WM_GetDispersionBeaconPeriod: ; 0x020D8AF0
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ add r0, sp, #0x0
+ bl OS_GetMacAddress
+ mov r2, #0x0
+ add r1, sp, #0x0
+ mov r3, r2
+_020D8B0C:
+ ldrb r0, [r1, #0x0]
+ add r2, r2, #0x1
+ cmp r2, #0x6
+ add r0, r3, r0
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ add r1, r1, #0x1
+ blt _020D8B0C
+ ldr r0, _020D8B88 ; =0x027FFC3C
+ mov r1, #0x7
+ ldr r0, [r0, #0x0]
+ ldr r2, _020D8B8C ; =0x66666667
+ add r0, r3, r0
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ mul r0, r3, r1
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ smull r0, r1, r2, r3
+ mov r1, r1, asr #0x3
+ mov r0, r3, lsr #0x1f
+ ldr r2, _020D8B90 ; =0x00000014
+ add r1, r0, r1
+ smull r0, r1, r2, r1
+ sub r1, r3, r0
+ add r0, r1, #0xc8
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D8B88: .word 0x027FFC3C
+_020D8B8C: .word 0x66666667
+_020D8B90: .word 0x00000014
+
+ arm_func_start WM_GetLinkLevel
+WM_GetLinkLevel: ; 0x020D8B94
+ stmdb sp!, {r4,lr}
+ bl WMi_GetSystemWork
+ mov r4, r0
+ bl WMi_CheckInitialized
+_020D8BA4: ; 0x020D8BA4
+ cmp r0, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r2, [r4, #0x4]
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x9
+ beq _020D8BE4
+ cmp r0, #0xa
+ beq _020D8C10
+ cmp r0, #0xb
+ beq _020D8C10
+ b _020D8C2C
+_020D8BE4:
+ ldr r0, _020D8C38 ; =0x00000182
+ mov r1, #0x2
+ add r0, r2, r0
+ bl DC_InvalidateRange
+ ldr r2, [r4, #0x4]
+ add r0, r2, #0x100
+ ldrh r0, [r0, #0x82]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020D8C10:
+ add r0, r2, #0xbc
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ ldrh r0, [r0, #0xbc]
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D8C2C:
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D8C38: .word 0x00000182
+
+ arm_func_start WM_GetAllowedChannel
+WM_GetAllowedChannel: ; 0x020D8C3C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl WMi_CheckInitialized
+_020D8C48: ; 0x020D8C48
+ cmp r0, #0x0
+ movne r0, #0x8000
+ ldreq r0, _020D8C64 ; =0x027FFCFA
+ ldreqh r0, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D8C64: .word 0x027FFCFA
+
+ arm_func_start WM_ReadMPData
+WM_ReadMPData: ; 0x020D8C68
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x40
+ mov r5, r0
+ mov r4, r1
+ bl WMi_GetSystemWork
+ mov r6, r0
+ bl WMi_CheckInitialized
+_020D8C84: ; 0x020D8C84
+ cmp r0, #0x0
+ addne sp, sp, #0x40
+ movne r0, #0x0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ cmp r4, #0x1
+ blo _020D8CA8
+ cmp r4, #0xf
+ bls _020D8CB8
+_020D8CA8:
+ add sp, sp, #0x40
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D8CB8:
+ ldr r2, [r6, #0x4]
+ ldr r0, _020D8D68 ; =0x00000182
+ mov r1, #0x2
+ add r0, r2, r0
+ bl DC_InvalidateRange
+ ldr r0, [r6, #0x4]
+ mov r1, #0x1
+ add r0, r0, #0x100
+ ldrh r2, [r0, #0x82]
+ mov r0, r1, lsl r4
+ ands r0, r2, r0
+ addeq sp, sp, #0x40
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldrh r0, [r5, #0x4]
+ cmp r0, #0x0
+ addeq sp, sp, #0x40
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ add r0, r5, #0xa
+ str r0, [sp, #0x0]
+ mov r3, #0x0
+ add r2, sp, #0x0
+_020D8D1C:
+ ldr r0, [r2, r3, lsl #0x2]
+ ldrh r1, [r0, #0x4]
+ cmp r4, r1
+ addeq sp, sp, #0x40
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ add r3, r3, #0x1
+ sub r0, r3, #0x1
+ ldrh r1, [r5, #0x6]
+ ldr r0, [r2, r0, lsl #0x2]
+ add r0, r1, r0
+ str r0, [r2, r3, lsl #0x2]
+ ldrh r0, [r5, #0x4]
+ cmp r3, r0
+ blt _020D8D1C
+ mov r0, #0x0
+ add sp, sp, #0x40
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D8D68: .word 0x00000182
+
+ arm_func_start WM_GetMPReceiveBufferSize
+WM_GetMPReceiveBufferSize:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl WMi_GetSystemWork
+ mov r4, r0
+ mov r0, #0x2
+ mov r1, #0x7
+ mov r2, #0x8
+ bl WMi_CheckStateEx
+_020D8D8C: ; 0x020D8D8C
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ movne r0, #0x0
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0xc
+ bl DC_InvalidateRange
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x1
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ add r0, r1, #0x188
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r1, [r4, #0x4]
+ add r0, r1, #0x100
+ ldrh r0, [r0, #0x88]
+ cmp r0, #0x0
+ moveq r5, #0x1
+ add r0, r1, #0x3e
+ mov r1, #0x2
+ movne r5, #0x0
+ bl DC_InvalidateRange
+ cmp r5, #0x1
+ ldr r0, [r4, #0x4]
+ addne sp, sp, #0x4
+ ldrh r5, [r0, #0x3e]
+ addne r0, r5, #0x51
+ bicne r0, r0, #0x1f
+ movne r0, r0, lsl #0x1
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ add r0, r0, #0xf8
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ add r1, r5, #0xc
+ ldrh r0, [r0, #0xf8]
+ mul r0, r1, r0
+ add r0, r0, #0x29
+ bic r0, r0, #0x1f
+ mov r0, r0, lsl #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_GetMPSendBufferSize
+WM_GetMPSendBufferSize:
+ stmdb sp!, {r4,lr}
+ bl WMi_GetSystemWork
+ mov r4, r0
+ mov r0, #0x2
+ mov r1, #0x7
+ mov r2, #0x8
+ bl WMi_CheckStateEx
+_020D8E70: ; 0x020D8E70
+ cmp r0, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0xc
+ bl DC_InvalidateRange
+ ldr r1, [r4, #0x4]
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ add r0, r1, #0x3c
+ mov r1, #0x4
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ ldrh r0, [r0, #0x3c]
+ add r0, r0, #0x1f
+ bic r0, r0, #0x1f
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_ReadStatus
+WM_ReadStatus: ; 0x020D8ECC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl WMi_GetSystemWork
+ mov r4, r0
+ bl WMi_CheckInitialized
+_020D8EE4: ; 0x020D8EE4
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r5, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x7c0
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ mov r1, r5
+ mov r2, #0x7c0
+ bl MIi_CpuCopyFast
+_020D8F24: ; 0x020D8F24
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_SetPortCallback
+WM_SetPortCallback:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x48
+ movs r5, r1
+ mov r6, r0
+ mov r4, r2
+ beq _020D8F9C
+ add r0, sp, #0x0
+ mov r1, #0x0
+ mov r2, #0x44
+ bl MI_CpuFill8
+ mov r3, #0x0
+ ldr r1, _020D9010 ; =0x0000FFFF
+ mov r7, #0x82
+ mov r2, #0x19
+ add r0, sp, #0x14
+ strh r7, [sp, #0x0]
+ strh r3, [sp, #0x2]
+ strh r2, [sp, #0x4]
+ strh r6, [sp, #0x6]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ strh r3, [sp, #0x10]
+ strh r1, [sp, #0x1a]
+ str r4, [sp, #0x1c]
+ strh r3, [sp, #0x12]
+ bl OS_GetMacAddress
+_020D8F9C:
+ bl OS_DisableInterrupts
+ mov r8, r0
+ bl WMi_CheckInitialized
+ movs r7, r0
+ beq _020D8FC8
+ mov r0, r8
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x48
+ mov r0, r7
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D8FC8:
+ bl WMi_GetSystemWork
+ add r0, r0, r6, lsl #0x2
+ str r5, [r0, #0xcc]
+ str r4, [r0, #0x10c]
+ cmp r5, #0x0
+ beq _020D8FF8
+ bl WM_GetConnectedAIDs
+ strh r0, [sp, #0x22]
+ bl WM_GetAID
+ strh r0, [sp, #0x20]
+ add r0, sp, #0x0
+ blx r5
+_020D8FF8:
+ mov r0, r8
+ bl OS_RestoreInterrupts
+_020D9000: ; 0x020D9000
+ mov r0, #0x0
+ add sp, sp, #0x48
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D9010: .word 0x0000FFFF
+
+ arm_func_start WM_SetIndCallback
+WM_SetIndCallback: ; 0x020D9014
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ bl WMi_CheckInitialized
+ movs r4, r0
+ beq _020D9044
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D9044:
+ bl WMi_GetSystemWork
+ str r6, [r0, #0xc8]
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D9054: ; 0x020D9054
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start WM_Disconnect
+WM_Disconnect: ; 0x020D9060
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r6, r0
+ mov r5, r1
+ bl WMi_GetSystemWork
+ mov r1, #0xa
+ mov r4, r0
+ str r1, [sp, #0x0]
+ mov r12, #0xb
+ mov r0, #0x5
+ mov r1, #0x7
+ mov r2, #0x9
+ mov r3, #0x8
+ str r12, [sp, #0x4]
+ bl WMi_CheckStateEx
+_020D909C: ; 0x020D909C
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr r2, [r4, #0x4]
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x7
+ beq _020D90C4
+ cmp r0, #0x9
+ bne _020D9120
+_020D90C4:
+ cmp r5, #0x1
+ blo _020D90D4
+ cmp r5, #0xf
+ bls _020D90E4
+_020D90D4:
+ add sp, sp, #0x8
+ mov r0, #0x6
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D90E4:
+ ldr r0, _020D9164 ; =0x00000182
+ mov r1, #0x2
+ add r0, r2, r0
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ mov r1, #0x1
+ add r0, r0, #0x100
+ ldrh r2, [r0, #0x82]
+ mov r0, r1, lsl r5
+ ands r0, r2, r0
+ bne _020D9134
+ add sp, sp, #0x8
+ mov r0, #0x7
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D9120:
+ cmp r5, #0x0
+ addne sp, sp, #0x8
+ movne r0, #0x6
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+_020D9134:
+ mov r1, r6
+ mov r0, #0xd
+ bl WMi_SetCallbackTable
+ mov r1, #0x1
+ mov r2, r1, lsl r5
+ mov r0, #0xd
+ bl WMi_SendCommand
+_020D9150: ; 0x020D9150
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D9164: .word 0x00000182
+
+ arm_func_start WM_StartConnectEx
+WM_StartConnectEx: ; 0x020D9168
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x2c
+ mov r7, r0
+ mov r6, r1
+ mov r0, #0x1
+ mov r1, #0x2
+ mov r5, r2
+ mov r4, r3
+ bl WMi_CheckStateEx
+_020D918C: ; 0x020D918C
+ cmp r0, #0x0
+ addne sp, sp, #0x2c
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r6, #0x0
+ addeq sp, sp, #0x2c
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldrh r1, [r6, #0x0]
+ mov r0, r6
+ mov r1, r1, lsl #0x1
+ bl DC_StoreRange
+ bl WMi_GetSystemWork
+ add r1, r0, #0x100
+ mov r2, #0x0
+ strh r2, [r1, #0x50]
+ str r2, [r0, #0x14c]
+ mov r1, r7
+ mov r0, #0xc
+ bl WMi_SetCallbackTable
+ mov r0, #0xc
+ strh r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ cmp r5, #0x0
+ beq _020D9208
+ add r1, sp, #0x8
+ mov r0, r5
+ mov r2, #0x18
+ bl MI_CpuCopy8
+ b _020D9218
+_020D9208:
+ add r0, sp, #0x8
+ mov r1, #0x0
+ mov r2, #0x18
+ bl MI_CpuFill8
+_020D9218:
+ ldrh r2, [sp, #0x40]
+ add r0, sp, #0x0
+ mov r1, #0x28
+ str r4, [sp, #0x20]
+ strh r2, [sp, #0x26]
+ bl WMi_SendCommandDirect
+_020D9230: ; 0x020D9230
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WM_EndScan
+WM_EndScan: ; 0x020D9244
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x5
+ bl WMi_CheckStateEx
+_020D9258: ; 0x020D9258
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0xb
+ bl WMi_SetCallbackTable
+ mov r0, #0xb
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D927C: ; 0x020D927C
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_StartScanEx
+WM_StartScanEx: ; 0x020D928C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x3c
+ mov r5, r0
+ mov r0, #0x3
+ mov r4, r1
+ mov r2, r0
+ mov r1, #0x2
+ mov r3, #0x5
+ bl WMi_CheckStateEx
+_020D92B0: ; 0x020D92B0
+ cmp r0, #0x0
+ addne sp, sp, #0x3c
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r4, #0x0
+ addeq sp, sp, #0x3c
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x3c
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldrh r0, [r4, #0x4]
+ cmp r0, #0x400
+ addhi sp, sp, #0x3c
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r5,lr}
+ bxhi lr
+ ldrh r0, [r4, #0x12]
+ cmp r0, #0x20
+ addhi sp, sp, #0x3c
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r5,lr}
+ bxhi lr
+ ldrh r1, [r4, #0x10]
+ cmp r1, #0x0
+ beq _020D934C
+ cmp r1, #0x1
+ beq _020D934C
+ cmp r1, #0x2
+ beq _020D934C
+ cmp r1, #0x3
+ addne sp, sp, #0x3c
+ movne r0, #0x6
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+_020D934C:
+ ldr r0, _020D9408 ; =0x0000FFFE
+ add r0, r1, r0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r0, #0x1
+ bhi _020D937C
+ ldrh r0, [r4, #0x34]
+ cmp r0, #0x20
+ addhi sp, sp, #0x3c
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r5,lr}
+ bxhi lr
+_020D937C:
+ mov r1, r5
+ mov r0, #0x26
+ bl WMi_SetCallbackTable
+ mov r0, #0x26
+ strh r0, [sp, #0x0]
+ ldrh r2, [r4, #0x6]
+ add r1, sp, #0xc
+ add r0, r4, #0xa
+ strh r2, [sp, #0x2]
+ ldr r3, [r4, #0x0]
+ mov r2, #0x6
+ str r3, [sp, #0x4]
+ ldrh r3, [r4, #0x4]
+ strh r3, [sp, #0x8]
+ ldrh r3, [r4, #0x8]
+ strh r3, [sp, #0xa]
+ bl MI_CpuCopy8
+ ldrh r2, [r4, #0x10]
+ add r1, sp, #0x16
+ add r0, r4, #0x14
+ strh r2, [sp, #0x12]
+ ldrh r3, [r4, #0x34]
+ mov r2, #0x20
+ strh r3, [sp, #0x36]
+ ldrh r3, [r4, #0x12]
+ strh r3, [sp, #0x14]
+ bl MI_CpuCopy8
+_020D93E8: ; 0x020D93E8
+ add r0, sp, #0x0
+ mov r1, #0x3c
+ bl WMi_SendCommandDirect
+_020D93F4: ; 0x020D93F4
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x3c
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D9408: .word 0x0000FFFE
+
+ arm_func_start WM_StartScan
+WM_StartScan: ; 0x020D940C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x14
+ mov r5, r0
+ mov r0, #0x3
+ mov r4, r1
+ mov r2, r0
+ mov r1, #0x2
+ mov r3, #0x5
+ bl WMi_CheckStateEx
+_020D9430: ; 0x020D9430
+ cmp r0, #0x0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r4, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldrh r0, [r4, #0x4]
+ cmp r0, #0x1
+ blo _020D9480
+ cmp r0, #0xe
+ bls _020D9490
+_020D9480:
+ add sp, sp, #0x14
+ mov r0, #0x6
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D9490:
+ mov r1, r5
+ mov r0, #0xa
+ bl WMi_SetCallbackTable
+ mov r0, #0xa
+ strh r0, [sp, #0x0]
+ ldrh r2, [r4, #0x4]
+ add r0, sp, #0x0
+ mov r1, #0x10
+ strh r2, [sp, #0x2]
+ ldr r2, [r4, #0x0]
+ str r2, [sp, #0x4]
+ ldrh r2, [r4, #0x6]
+ strh r2, [sp, #0x8]
+ ldrb r2, [r4, #0x8]
+ strb r2, [sp, #0xa]
+ ldrb r2, [r4, #0x9]
+ strb r2, [sp, #0xb]
+ ldrb r2, [r4, #0xa]
+ strb r2, [sp, #0xc]
+ ldrb r2, [r4, #0xb]
+ strb r2, [sp, #0xd]
+ ldrb r2, [r4, #0xc]
+ strb r2, [sp, #0xe]
+ ldrb r2, [r4, #0xd]
+ strb r2, [sp, #0xf]
+ bl WMi_SendCommandDirect
+_020D94F8: ; 0x020D94F8
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_EndParent
+WM_EndParent: ; 0x020D950C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x7
+ bl WMi_CheckStateEx
+_020D9520: ; 0x020D9520
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x9
+ bl WMi_SetCallbackTable
+ mov r0, #0x9
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D9544: ; 0x020D9544
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_StartParent
+WM_StartParent: ; 0x020D9554
+ ldr ip, _020D9560 ; =FUN_020D9564
+ mov r1, #0x1
+ bx r12
+ .balign 4
+_020D9560: .word FUN_020D9564
+
+ arm_func_start FUN_020D9564
+FUN_020D9564: ; 0x020D9564
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r0, #0x1
+ mov r1, #0x2
+ bl WMi_CheckStateEx
+_020D9580: ; 0x020D9580
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ bl WMi_GetSystemWork
+ add r1, r0, #0x100
+ mov r2, #0x0
+ strh r2, [r1, #0x50]
+ str r2, [r0, #0x14c]
+ mov r1, r5
+ mov r0, #0x8
+ bl WMi_SetCallbackTable
+ mov r2, r4
+ mov r0, #0x8
+ mov r1, #0x1
+ bl WMi_SendCommand
+_020D95C0: ; 0x020D95C0
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WmCheckParentParameter
+WmCheckParentParameter: ; 0x020D95D4
+ ldrh r1, [r0, #0x4]
+ cmp r1, #0x70
+ movhi r0, #0x0
+ bxhi lr
+ ldrh r1, [r0, #0x18]
+ cmp r1, #0xa
+ blo _020D95F8
+ cmp r1, #0x3e8
+ bls _020D9600
+_020D95F8:
+ mov r0, #0x0
+ bx lr
+_020D9600:
+ ldrh r0, [r0, #0x32]
+ cmp r0, #0x1
+ blo _020D9614
+ cmp r0, #0xe
+ bls _020D961C
+_020D9614:
+ mov r0, #0x0
+ bx lr
+_020D961C:
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start WM_SetParentParameter
+WM_SetParentParameter: ; 0x020D9624
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r0, #0x1
+ mov r1, #0x2
+ bl WMi_CheckStateEx
+_020D9640: ; 0x020D9640
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldrh r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _020D9688
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+_020D9688:
+ ldrh r1, [r4, #0x14]
+ ldrh r0, [r4, #0x34]
+ cmp r1, #0x0
+ movne r2, #0x2a
+ moveq r2, #0x0
+ add r0, r0, r2
+ cmp r0, #0x200
+ bgt _020D96C4
+ ldrh r0, [r4, #0x36]
+ cmp r1, #0x0
+ movne r1, #0x6
+ moveq r1, #0x0
+ add r0, r0, r1
+ cmp r0, #0x200
+ ble _020D96D4
+_020D96C4:
+ add sp, sp, #0x4
+ mov r0, #0x6
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D96D4:
+ mov r0, r4
+ bl WmCheckParentParameter
+ mov r1, r5
+ mov r0, #0x7
+ bl WMi_SetCallbackTable
+ mov r0, r4
+ mov r1, #0x40
+ bl DC_StoreRange
+ ldrh r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _020D9708
+ ldr r0, [r4, #0x0]
+ bl DC_StoreRange
+_020D9708:
+ mov r2, r4
+ mov r0, #0x7
+ mov r1, #0x1
+ bl WMi_SendCommand
+_020D9718: ; 0x020D9718
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_End
+WM_End: ; 0x020D972C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x2
+ bl WMi_CheckStateEx
+_020D9740: ; 0x020D9740
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x2
+ bl WMi_SetCallbackTable
+ mov r0, #0x2
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D9764: ; 0x020D9764
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_Reset
+WM_Reset: ; 0x020D9774
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl WMi_CheckIdle
+_020D9780: ; 0x020D9780
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x1
+ bl WMi_SetCallbackTable
+ mov r0, #0x1
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D97A4: ; 0x020D97A4
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_Initialize
+WM_Initialize: ; 0x020D97B4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r4, r1
+ mov r1, r2
+ bl WM_Init
+_020D97C8: ; 0x020D97C8
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x0
+ bl WMi_SetCallbackTable
+ bl WMi_GetSystemWork
+ mov r3, r0
+ ldr r1, [r3, #0x10]
+ mov r0, #0x0
+ str r1, [sp, #0x0]
+ ldr r2, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ mov r1, #0x3
+ bl WMi_SendCommand
+_020D9808: ; 0x020D9808
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_PowerOff
+WM_PowerOff: ; 0x020D981C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x2
+ bl WMi_CheckStateEx
+_020D9830: ; 0x020D9830
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x6
+ bl WMi_SetCallbackTable
+ mov r0, #0x6
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D9854: ; 0x020D9854
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_PowerOn
+WM_PowerOn: ; 0x020D9864
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, r0
+ bl WMi_CheckStateEx
+_020D9878: ; 0x020D9878
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x5
+ bl WMi_SetCallbackTable
+ mov r0, #0x5
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D989C: ; 0x020D989C
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_Disable
+WM_Disable: ; 0x020D98AC
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, r0
+ bl WMi_CheckStateEx
+_020D98C0: ; 0x020D98C0
+ cmp r0, #0x0
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x4
+ bl WMi_SetCallbackTable
+ mov r0, #0x4
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D98E4: ; 0x020D98E4
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_Enable
+WM_Enable: ; 0x020D98F4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x0
+ bl WMi_CheckStateEx
+_020D990C: ; 0x020D990C
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ mov r1, r4
+ mov r0, #0x3
+ bl WMi_SetCallbackTable
+ bl WMi_GetSystemWork
+ mov r3, r0
+ ldr r1, [r3, #0x10]
+ mov r0, #0x3
+ str r1, [sp, #0x0]
+ ldr r2, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ mov r1, r0
+ bl WMi_SendCommand
+_020D994C: ; 0x020D994C
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_EndMP
+WM_EndMP: ; 0x020D9960
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl WMi_GetSystemWork
+ mov r4, r0
+ mov r0, #0x2
+ mov r1, #0x9
+ mov r2, #0xa
+ bl WMi_CheckStateEx
+_020D9984: ; 0x020D9984
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0xc
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ mov r1, r5
+ mov r0, #0x10
+ bl WMi_SetCallbackTable
+ mov r0, #0x10
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D99D8: ; 0x020D99D8
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_SetMPDataToPortEx
+WM_SetMPDataToPortEx: ; 0x020D99EC
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x14
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ mov r5, #0x1
+ bl WMi_GetSystemWork
+ ldr r4, [r0, #0x4]
+ mov r0, #0x2
+ mov r1, #0x9
+ mov r2, #0xa
+ bl WMi_CheckStateEx
+_020D9A20: ; 0x020D9A20
+ cmp r0, #0x0
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4-r9,lr}
+ bxne lr
+ add r0, r4, #0x3c
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ add r0, r4, #0x188
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ add r0, r4, #0x100
+ ldrh r0, [r0, #0x88]
+ cmp r0, #0x0
+ bne _020D9A7C
+ ldr r0, _020D9B44 ; =0x00000182
+ mov r1, #0x2
+ add r0, r4, r0
+ bl DC_InvalidateRange
+ add r2, r4, #0x100
+ add r0, r4, #0x86
+ mov r1, #0x2
+ ldrh r5, [r2, #0x82]
+ bl DC_InvalidateRange
+_020D9A7C:
+ cmp r7, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r5, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x7
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ add r0, r4, #0x7c
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x7c]
+ cmp r7, r0
+ addeq sp, sp, #0x14
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r6, #0x200
+ addhi sp, sp, #0x14
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r9,lr}
+ bxhi lr
+ cmp r6, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ mov r0, r7
+ mov r1, r6
+ bl DC_StoreRange
+ ldrh r2, [sp, #0x30]
+ ldrh r1, [sp, #0x34]
+ ldrh r0, [sp, #0x38]
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ str r9, [sp, #0xc]
+ mov r2, r7
+ mov r3, r6
+ mov r0, #0xf
+ mov r1, #0x7
+ str r8, [sp, #0x10]
+ bl WMi_SendCommand
+_020D9B30: ; 0x020D9B30
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020D9B44: .word 0x00000182
+
+ arm_func_start WM_StartMP
+WM_StartMP: ; 0x020D9B48
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x24
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ add r1, sp, #0x8
+ mov r0, #0x0
+ mov r2, #0x1c
+ mov r4, r3
+ bl MIi_CpuClear32
+ ldrh r12, [sp, #0x3c]
+ mov r0, #0x3
+ str r0, [sp, #0x8]
+ ldrh lr, [sp, #0x38]
+ strh r12, [sp, #0xc]
+ strh r12, [sp, #0xe]
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ add r12, sp, #0x8
+ str lr, [sp, #0x0]
+ str r12, [sp, #0x4]
+ bl WMi_StartMP
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WM_StartMPEx
+WM_StartMPEx: ; 0x020D9BB4
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x28
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ add r1, sp, #0x8
+ mov r0, #0x0
+ mov r2, #0x1c
+ mov r4, r3
+ bl MIi_CpuClear32
+ ldrh lr, [sp, #0x44]
+ ldr r1, [sp, #0x58]
+ ldrh r12, [sp, #0x48]
+ ldr r0, [sp, #0x54]
+ ldr r8, _020D9C54 ; =0x00001E03
+ cmp r0, #0x0
+ ldr r3, [sp, #0x4c]
+ ldr r2, [sp, #0x50]
+ strb r1, [sp, #0x22]
+ strh r12, [sp, #0x1e]
+ strb r3, [sp, #0x20]
+ strb r2, [sp, #0x21]
+ ldrh r1, [sp, #0x40]
+ str r8, [sp, #0x8]
+ orrne r0, r8, #0x4
+ strne r0, [sp, #0x8]
+ strh lr, [sp, #0xc]
+ strh lr, [sp, #0xe]
+ strneh lr, [sp, #0x10]
+ str r1, [sp, #0x0]
+ add r12, sp, #0x8
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ str r12, [sp, #0x4]
+ bl WMi_StartMP
+ add sp, sp, #0x28
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D9C54: .word 0x00001E03
+
+ arm_func_start WMi_StartMP
+WMi_StartMP: ; 0x020D9C58
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x34
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ bl WMi_GetSystemWork
+ ldr r5, [r0, #0x4]
+ mov r0, #0x2
+ mov r1, #0x7
+ mov r2, #0x8
+ bl WMi_CheckStateEx
+_020D9C88: ; 0x020D9C88
+ cmp r0, #0x0
+ addne sp, sp, #0x34
+ ldmneia sp!, {r4-r9,lr}
+ bxne lr
+ add r0, r5, #0x188
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ add r0, r5, #0xc6
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ add r0, r5, #0x100
+ ldrh r0, [r0, #0x88]
+ cmp r0, #0x0
+ beq _020D9CD8
+ ldrh r0, [r5, #0xc6]
+ cmp r0, #0x1
+ addne sp, sp, #0x34
+ movne r0, #0x3
+ ldmneia sp!, {r4-r9,lr}
+ bxne lr
+_020D9CD8:
+ add r0, r5, #0xc
+ mov r1, #0x4
+ bl DC_InvalidateRange
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x1
+ addeq sp, sp, #0x34
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ ands r0, r7, #0x3f
+ addne sp, sp, #0x34
+ movne r0, #0x6
+ ldmneia sp!, {r4-r9,lr}
+ bxne lr
+ ldrh r4, [sp, #0x50]
+ ands r0, r4, #0x1f
+ addne sp, sp, #0x34
+ movne r0, #0x6
+ ldmneia sp!, {r4-r9,lr}
+ bxne lr
+ add r0, r5, #0x9c
+ mov r1, #0x2
+ bl DC_InvalidateRange
+ ldrh r0, [r5, #0x9c]
+ cmp r0, #0x0
+ bne _020D9D70
+ bl WM_GetMPReceiveBufferSize
+_020D9D44: ; 0x020D9D44
+ cmp r7, r0
+ addlt sp, sp, #0x34
+ movlt r0, #0x6
+ ldmltia sp!, {r4-r9,lr}
+ bxlt lr
+ bl WM_GetMPSendBufferSize
+_020D9D5C: ; 0x020D9D5C
+ cmp r4, r0
+ addlt sp, sp, #0x34
+ movlt r0, #0x6
+ ldmltia sp!, {r4-r9,lr}
+ bxlt lr
+_020D9D70:
+ mov r1, r9
+ mov r0, #0xe
+ bl WMi_SetCallbackTable
+ add r1, sp, #0x0
+ mov r0, #0x0
+ mov r2, #0x30
+ bl MIi_CpuClear32
+ ldrh r3, [sp, #0x50]
+ mov r4, r7, lsr #0x1
+ mov r5, #0xe
+ ldr r0, [sp, #0x54]
+ add r1, sp, #0x14
+ mov r2, #0x1c
+ strh r5, [sp, #0x0]
+ str r8, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r6, [sp, #0xc]
+ str r3, [sp, #0x10]
+ bl MIi_CpuCopy32
+_020D9DBC: ; 0x020D9DBC
+ add r0, sp, #0x0
+ mov r1, #0x30
+ bl WMi_SendCommandDirect
+_020D9DC8: ; 0x020D9DC8
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start WM_EndDCF
+WM_EndDCF: ; 0x020D9DDC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl WMi_GetSystemWork
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0xb
+ bl WMi_CheckStateEx
+_020D9DFC: ; 0x020D9DFC
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0x10
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ mov r1, r5
+ mov r0, #0x13
+ bl WMi_SetCallbackTable
+ mov r0, #0x13
+ mov r1, #0x0
+ bl WMi_SendCommand
+_020D9E50: ; 0x020D9E50
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_SetDCFData
+WM_SetDCFData: ; 0x020D9E64
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl WMi_GetSystemWork
+ mov r8, r0
+ mov r0, #0x1
+ mov r1, #0xb
+ bl WMi_CheckStateEx
+_020D9E90: ; 0x020D9E90
+ cmp r0, #0x0
+ addne sp, sp, #0x10
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ ldr r0, [r8, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0x10
+ bl DC_InvalidateRange
+ ldr r0, [r8, #0x4]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ addeq sp, sp, #0x10
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, _020D9F3C ; =0x000005E4
+ cmp r4, r0
+ addhi sp, sp, #0x10
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r8,lr}
+ bxhi lr
+ mov r0, r5
+ mov r1, r4
+ bl DC_StoreRange
+ mov r1, r7
+ mov r0, #0x12
+ bl WMi_SetCallbackTable
+ add r1, sp, #0x8
+ mov r0, r6
+ mov r2, #0x6
+ bl MI_CpuCopy8
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x12
+ mov r1, #0x4
+ bl WMi_SendCommand
+_020D9F28: ; 0x020D9F28
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D9F3C: .word 0x000005E4
+
+ arm_func_start WM_StartDCF
+WM_StartDCF: ; 0x020D9F40
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl WMi_GetSystemWork
+ mov r4, r0
+ mov r0, #0x1
+ mov r1, #0x8
+ bl WMi_CheckStateEx
+_020D9F68: ; 0x020D9F68
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ ldr r0, [r4, #0x4]
+ mov r1, #0x4
+ add r0, r0, #0x10
+ bl DC_InvalidateRange
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x1
+ addeq sp, sp, #0x4
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ cmp r5, #0x10
+ addcc sp, sp, #0x4
+ movcc r0, #0x6
+ ldmccia sp!, {r4-r7,lr}
+ bxcc lr
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, r6
+ mov r1, r5
+ bl DC_StoreRange
+ mov r1, r7
+ mov r0, #0x11
+ bl WMi_SetCallbackTable
+ mov r2, r6
+ mov r3, r5
+ mov r0, #0x11
+ mov r1, #0x2
+ bl WMi_SendCommand
+_020D9FF8: ; 0x020D9FF8
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WmGetSharedDataAddress
+WmGetSharedDataAddress: ; 0x020DA00C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r12, #0x1
+ mov r3, r12, lsl r3
+ sub r3, r3, #0x1
+ mov r5, r0
+ and r0, r1, r3
+ mov r4, r2
+ bl FUN_020DDC5C
+ add r1, r5, #0x800
+ ldrh r1, [r1, #0x10]
+ mla r0, r1, r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_GetSharedDataAddress
+WM_GetSharedDataAddress: ; 0x020DA048
+ stmdb sp!, {r4,lr}
+ mov r4, r1
+ ldrh lr, [r4, #0x2]
+ cmp r0, #0x0
+ mov r3, r2
+ mov r1, #0x1
+ mov r12, r1, lsl r3
+ ldrh r1, [r4, #0x0]
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ cmp r4, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ands r2, r1, r12
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ands r2, lr, r12
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ add r2, r4, #0x4
+ bl WmGetSharedDataAddress
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WmDataSharingSendDataSet
+WmDataSharingSendDataSet:
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x10
+ mov r10, r0
+ mov r9, r1
+ bl OS_DisableInterrupts
+ add r1, r10, #0x800
+ ldrh r1, [r1, #0x8]
+ mov r7, r0
+ mov r1, r1, lsl #0x9
+ ldrh r1, [r10, r1]
+ cmp r1, #0x0
+ bne _020DA210
+ bl WMi_GetMPReadyAIDs
+ add r1, r10, #0x800
+ ldrh r6, [r1, #0x8]
+ mov r5, r0
+ ldrh r1, [r1, #0x18]
+ add r0, r6, #0x1
+ and r0, r0, #0x3
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0x10
+ cmp r1, #0x1
+ addeq r0, r4, #0x1
+ andeq r0, r0, #0x3
+ moveq r0, r0, lsl #0x10
+ moveq r8, r0, lsr #0x10
+ movne r8, r4
+ add r1, r10, r8, lsl #0x9
+ mov r0, #0x0
+ mov r2, #0x200
+ bl MIi_CpuClear16
+ add r0, r10, #0x800
+ ldrh r3, [r0, #0xe]
+ orr r2, r5, #0x1
+ mov r1, r8, lsl #0x9
+ and r2, r3, r2
+ strh r2, [r10, r1]
+ strh r4, [r0, #0x8]
+ ldrh r0, [r0, #0xe]
+ mov r1, r6, lsl #0x9
+ cmp r9, #0x1
+ strh r0, [r10, r1]
+ ldreqh r0, [r10, r1]
+ biceq r0, r0, #0x1
+ streqh r0, [r10, r1]
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ add r3, r10, #0x800
+ ldrh r1, [r3, #0xe]
+ mov r4, #0x1
+ ldr r0, _020DA220 ; =WmDataSharingSetDataCallback
+ and r1, r1, r5
+ mov r1, r1, lsl #0x10
+ mov r1, r1, lsr #0x10
+ str r1, [sp, #0x0]
+ ldrh r5, [r3, #0x16]
+ mov r1, r10
+ add r2, r10, r6, lsl #0x9
+ str r5, [sp, #0x4]
+ str r4, [sp, #0x8]
+ ldrh r3, [r3, #0x14]
+ bl WM_SetMPDataToPortEx
+ cmp r0, #0x7
+ bne _020DA1E4
+ add r0, r10, r6, lsl #0x1
+ ldr r1, _020DA224 ; =0x0000FFFF
+ add r0, r0, #0x800
+ strh r1, [r0, #0x0]
+ add r0, r10, #0x800
+ ldrh r1, [r0, #0xa]
+ add sp, sp, #0x10
+ add r1, r1, #0x1
+ and r1, r1, #0x3
+ strh r1, [r0, #0xa]
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020DA1E4:
+ cmp r0, #0x0
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r4-r10,lr}
+ bxeq lr
+ cmp r0, #0x2
+ addne r0, r10, #0x800
+ movne r1, #0x5
+ strneh r1, [r0, #0x1c]
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+_020DA210:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020DA220: .word WmDataSharingSetDataCallback
+_020DA224: .word 0x0000FFFF
+
+ arm_func_start WmDataSharingReceiveData
+WmDataSharingReceiveData: ; 0x020DA228
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r3, r1
+ mov r0, #0x1
+ mov r0, r0, lsl r3
+ add r12, r7, #0x800
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r12, #0xe]
+ mov r5, r0, lsr #0x10
+ mov r6, r2
+ ands r0, r1, r5
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldrh r4, [r12, #0x8]
+ mov r0, r4, lsl #0x9
+ ldrh r0, [r7, r0]
+ ands r0, r5, r0
+ bne _020DA2B4
+ ldrh r0, [r12, #0x18]
+ cmp r0, #0x1
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ add r0, r4, #0x1
+ and r0, r0, #0x3
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0x10
+ mov r0, r4, lsl #0x9
+ ldrh r0, [r7, r0]
+ ands r0, r5, r0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+_020DA2B4:
+ add r2, r7, r4, lsl #0x9
+ mov r0, r7
+ add r2, r2, #0x4
+ bl WmGetSharedDataAddress
+ mov r1, r0
+ cmp r6, #0x0
+ beq _020DA2E4
+ add r0, r7, #0x800
+ ldrh r2, [r0, #0x10]
+ mov r0, r6
+ bl MIi_CpuCopy16
+ b _020DA2F4
+_020DA2E4:
+ add r0, r7, #0x800
+ ldrh r2, [r0, #0x10]
+ mov r0, #0x0
+ bl MIi_CpuClear16
+_020DA2F4:
+ bl OS_DisableInterrupts
+ mov r4, r4, lsl #0x9
+ ldrh r3, [r7, r4]
+ mvn r1, r5
+ add r2, r7, #0x2
+ and r1, r3, r1
+ strh r1, [r7, r4]
+ ldrh r1, [r2, r4]
+ orr r1, r1, r5
+ strh r1, [r2, r4]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WmDataSharingReceiveCallback_Child
+WmDataSharingReceiveCallback_Child: ; 0x020DA32C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r7, [r8, #0x1c]
+ cmp r7, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldrh r0, [r8, #0x2]
+ cmp r0, #0x0
+ bne _020DA458
+ ldrh r0, [r8, #0x4]
+ cmp r0, #0x15
+ bgt _020DA394
+ cmp r0, #0x15
+ bge _020DA3C4
+ cmp r0, #0x9
+ ldmgtia sp!, {r4-r8,lr}
+ bxgt lr
+ cmp r0, #0x7
+ ldmltia sp!, {r4-r8,lr}
+ bxlt lr
+ cmp r0, #0x7
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ cmp r0, #0x9
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020DA394:
+ cmp r0, #0x1a
+ ldmgtia sp!, {r4-r8,lr}
+ bxgt lr
+ cmp r0, #0x19
+ ldmltia sp!, {r4-r8,lr}
+ bxlt lr
+ cmp r0, #0x19
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ cmp r0, #0x1a
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020DA3C4:
+ ldr r4, [r8, #0xc]
+ ldrh r6, [r8, #0x10]
+ ldrh r5, [r4, #0x0]
+ bl WM_GetAID
+ add r1, r7, #0x800
+ ldrh r1, [r1, #0x14]
+ cmp r6, r1
+ beq _020DA3EC
+ cmp r6, #0x200
+ movhi r6, #0x200
+_020DA3EC:
+ cmp r6, #0x4
+ ldmccia sp!, {r4-r8,lr}
+ bxcc lr
+ mov r1, #0x1
+ mov r0, r1, lsl r0
+ ands r0, r5, r0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ add r0, r7, #0x800
+ ldrh r1, [r0, #0x8]
+ mov r0, r4
+ mov r2, r6
+ add r1, r7, r1, lsl #0x9
+ bl MIi_CpuCopy16
+ add r1, r7, #0x800
+ ldrh r0, [r1, #0x8]
+ ldrh r2, [r8, #0x1a]
+ add r0, r7, r0, lsl #0x1
+ mov r2, r2, asr #0x1
+ add r0, r0, #0x800
+ strh r2, [r0, #0x0]
+ ldrh r0, [r1, #0x8]
+ add r0, r0, #0x1
+ and r0, r0, #0x3
+ strh r0, [r1, #0x8]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020DA458:
+ add r0, r7, #0x800
+ mov r1, #0x5
+ strh r1, [r0, #0x1c]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start WmDataSharingReceiveCallback_Parent
+WmDataSharingReceiveCallback_Parent: ; 0x020DA46C
+ stmdb sp!, {r4-r6,lr}
+ ldr r4, [r0, #0x1c]
+ cmp r4, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldrh r1, [r0, #0x2]
+ cmp r1, #0x0
+ bne _020DA5C4
+ ldrh r1, [r0, #0x4]
+ cmp r1, #0x15
+ bgt _020DA4D0
+ cmp r1, #0x15
+ bge _020DA504
+ cmp r1, #0x9
+ ldmgtia sp!, {r4-r6,lr}
+ bxgt lr
+ cmp r1, #0x7
+ ldmltia sp!, {r4-r6,lr}
+ bxlt lr
+ cmp r1, #0x7
+ beq _020DA528
+ cmp r1, #0x9
+ beq _020DA53C
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020DA4D0:
+ cmp r1, #0x1a
+ ldmgtia sp!, {r4-r6,lr}
+ bxgt lr
+ cmp r1, #0x19
+ ldmltia sp!, {r4-r6,lr}
+ bxlt lr
+ cmp r1, #0x19
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ cmp r1, #0x1a
+ beq _020DA53C
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020DA504:
+ ldrh r1, [r0, #0x12]
+ ldr r2, [r0, #0xc]
+ mov r0, r4
+ bl WmDataSharingReceiveData
+ mov r0, r4
+ mov r1, #0x0
+ bl WmDataSharingSendDataSet
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020DA528:
+ mov r0, r4
+ mov r1, #0x0
+ bl WmDataSharingSendDataSet
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020DA53C:
+ ldrh r5, [r0, #0x12]
+ mov r6, #0x1
+ bl OS_DisableInterrupts
+ add r1, r4, #0x800
+ ldrh lr, [r1, #0x8]
+ mvn r12, r6, lsl r5
+ mov r3, lr, lsl #0x9
+ ldrh r2, [r4, r3]
+ and r2, r2, r12
+ strh r2, [r4, r3]
+ ldrh r1, [r1, #0x18]
+ cmp r1, #0x1
+ bne _020DA58C
+ add r1, lr, #0x1
+ and r1, r1, #0x3
+ mov r1, r1, lsl #0x10
+ mov r2, r1, lsr #0x7
+ ldrh r1, [r4, r2]
+ and r1, r1, r12
+ strh r1, [r4, r2]
+_020DA58C:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ mov r1, #0x0
+ bl WmDataSharingSendDataSet
+ add r0, r4, #0x800
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x1
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ mov r0, r4
+ mov r1, #0x0
+ bl WmDataSharingSendDataSet
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020DA5C4:
+ add r0, r4, #0x800
+ mov r1, #0x5
+ strh r1, [r0, #0x1c]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start WmDataSharingSetDataCallback
+WmDataSharingSetDataCallback: ; 0x020DA5D8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl WMi_GetSystemWork
+ ldrh r2, [r5, #0xa]
+ ldr r1, _020DA6E4 ; =WmDataSharingReceiveCallback_Parent
+ add r0, r0, r2, lsl #0x2
+ ldr r2, [r0, #0xcc]
+ ldr r4, [r0, #0x10c]
+ cmp r2, r1
+ beq _020DA618
+ ldr r0, _020DA6E8 ; =WmDataSharingReceiveCallback_Child
+ cmp r2, r0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+_020DA618:
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [r5, #0x20]
+ cmp r4, r0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ bl WM_GetAID
+ ldrh r1, [r5, #0x2]
+ cmp r1, #0x0
+ bne _020DA694
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ add r1, r4, #0x800
+ ldrh r0, [r1, #0xa]
+ ldrh r2, [r5, #0x1a]
+ add sp, sp, #0x4
+ add r0, r4, r0, lsl #0x1
+ mov r2, r2, asr #0x1
+ add r0, r0, #0x800
+ strh r2, [r0, #0x0]
+ ldrh r0, [r1, #0xa]
+ add r0, r0, #0x1
+ and r0, r0, #0x3
+ strh r0, [r1, #0xa]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020DA694:
+ cmp r1, #0xa
+ bne _020DA6CC
+ cmp r0, #0x0
+ addne r0, r4, #0x800
+ ldrneh r1, [r0, #0xa]
+ add sp, sp, #0x4
+ addne r1, r1, #0x3
+ andne r1, r1, #0x3
+ strneh r1, [r0, #0xa]
+ add r0, r4, #0x800
+ mov r1, #0x4
+ strh r1, [r0, #0x1c]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020DA6CC:
+ add r0, r4, #0x800
+ mov r1, #0x5
+ strh r1, [r0, #0x1c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020DA6E4: .word WmDataSharingReceiveCallback_Parent
+_020DA6E8: .word WmDataSharingReceiveCallback_Child
+
+ arm_func_start WM_StepDataSharing
+WM_StepDataSharing: ; 0x020DA6EC
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r10, r0
+ mov r9, r1
+ mov r8, r2
+ mov r0, #0x2
+ mov r1, #0x9
+ mov r2, #0xa
+ bl WMi_CheckStateEx
+_020DA710: ; 0x020DA710
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ cmp r10, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r9, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r8, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ bl WM_GetAID
+ movs r4, r0
+ bne _020DA770
+ bl WMi_GetMPReadyAIDs
+ mov r7, r0
+_020DA770:
+ add r0, r10, #0x800
+ ldrh r0, [r0, #0x1c]
+ cmp r0, #0x5
+ addeq sp, sp, #0xc
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r0, #0x1
+ beq _020DA7A8
+ cmp r0, #0x4
+ addne sp, sp, #0xc
+ movne r0, #0x3
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+_020DA7A8:
+ cmp r4, #0x0
+ mov r4, #0x5
+ bne _020DA94C
+ mov r6, #0x0
+ mov r11, r6
+ cmp r0, #0x4
+ bne _020DA870
+ add r1, r10, #0x800
+ mov r3, #0x1
+ strh r3, [r1, #0x1c]
+ ldrh r5, [r1, #0xe]
+ ldrh r2, [r1, #0x8]
+ ldr r0, _020DAA64 ; =WmDataSharingSetDataCallback
+ and r5, r5, r7
+ mov r5, r5, lsl #0x10
+ mov r5, r5, lsr #0x10
+ str r5, [sp, #0x0]
+ ldrh r5, [r1, #0x16]
+ add r2, r2, #0x3
+ and r2, r2, #0x3
+ str r5, [sp, #0x4]
+ str r3, [sp, #0x8]
+ mov r2, r2, lsl #0x10
+ mov r5, r2, lsr #0x10
+ ldrh r3, [r1, #0x14]
+ mov r1, r10
+ add r2, r10, r5, lsl #0x9
+ bl WM_SetMPDataToPortEx
+ cmp r0, #0x7
+ bne _020DA848
+ add r0, r10, r5, lsl #0x1
+ ldr r1, _020DAA68 ; =0x0000FFFF
+ add r0, r0, #0x800
+ strh r1, [r0, #0x0]
+ add r0, r10, #0x800
+ ldrh r1, [r0, #0xa]
+ add r1, r1, #0x1
+ and r1, r1, #0x3
+ strh r1, [r0, #0xa]
+ b _020DA870
+_020DA848:
+ cmp r0, #0x0
+ beq _020DA870
+ cmp r0, #0x2
+ addne r0, r10, #0x800
+ movne r1, r4
+ strneh r1, [r0, #0x1c]
+ addne sp, sp, #0xc
+ movne r0, #0x1
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+_020DA870:
+ add r0, r10, #0x800
+ ldrh r2, [r0, #0xc]
+ ldrh r1, [r0, #0xa]
+ cmp r2, r1
+ beq _020DA908
+ mov r4, r2, lsl #0x9
+ ldrh r3, [r10, r4]
+ mov r1, r8
+ mov r2, #0x200
+ orr r3, r3, #0x1
+ strh r3, [r10, r4]
+ ldrh r0, [r0, #0xc]
+ add r0, r10, r0, lsl #0x9
+ bl MIi_CpuCopy16
+ add r1, r10, #0x800
+ ldrh r0, [r1, #0xc]
+ mov r6, #0x1
+ mov r4, #0x0
+ add r0, r10, r0, lsl #0x1
+ add r0, r0, #0x800
+ ldrh r0, [r0, #0x0]
+ strh r0, [r1, #0x1a]
+ ldrh r0, [r1, #0xc]
+ add r0, r0, #0x1
+ and r0, r0, #0x3
+ strh r0, [r1, #0xc]
+ ldrh r0, [r1, #0x18]
+ cmp r0, #0x0
+ bne _020DA904
+ cmp r7, #0x0
+ beq _020DA904
+ ldrh r0, [r1, #0x8]
+ mov r0, r0, lsl #0x9
+ ldrh r0, [r10, r0]
+ cmp r0, #0x1
+ moveq r11, r6
+ beq _020DA908
+_020DA904:
+ mov r11, #0x0
+_020DA908:
+ mov r0, r10
+ mov r1, #0x0
+ bl WmDataSharingSendDataSet
+_020DA914: ; 0x020DA914
+ cmp r6, #0x0
+ beq _020DAA54
+ mov r0, r10
+ mov r2, r9
+ mov r1, #0x0
+ bl WmDataSharingReceiveData
+ add r0, r10, #0x800
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x0
+ bne _020DAA54
+ mov r0, r10
+ mov r1, r11
+ bl WmDataSharingSendDataSet
+ b _020DAA54
+_020DA94C:
+ cmp r0, #0x4
+ mov r0, #0x0
+ addeq r1, r10, #0x800
+ moveq r0, #0x1
+ streqh r0, [r1, #0x1c]
+ beq _020DA9D0
+ add r1, r10, #0x800
+ ldrh r2, [r1, #0xc]
+ ldrh r1, [r1, #0x8]
+ cmp r2, r1
+ beq _020DA9D0
+ mov r2, r2, lsl #0x9
+ ldrh r1, [r10, r2]
+ ands r3, r1, #0x1
+ orreq r1, r1, #0x1
+ streqh r1, [r10, r2]
+ beq _020DA9D0
+ mov r1, r8
+ add r0, r10, r2
+ mov r2, #0x200
+ bl MIi_CpuCopy16
+ add r2, r10, #0x800
+ ldrh r1, [r2, #0xc]
+ mov r0, #0x1
+ mov r4, #0x0
+ add r1, r10, r1, lsl #0x1
+ add r1, r1, #0x800
+ ldrh r1, [r1, #0x0]
+ strh r1, [r2, #0x1a]
+ ldrh r1, [r2, #0xc]
+ add r1, r1, #0x1
+ and r1, r1, #0x3
+ strh r1, [r2, #0xc]
+_020DA9D0:
+ cmp r0, #0x0
+ beq _020DAA54
+ add r0, r10, #0x800
+ ldrh r1, [r0, #0xa]
+ ldrh r2, [r0, #0x10]
+ mov r0, r9
+ add r1, r10, r1, lsl #0x9
+ add r7, r1, #0x20
+ mov r1, r7
+ bl MIi_CpuCopy16
+ add r3, r10, #0x800
+ ldrh r1, [r3, #0xe]
+ mov r5, #0x1
+ ldr r0, _020DAA64 ; =WmDataSharingSetDataCallback
+ str r1, [sp, #0x0]
+ ldrh r6, [r3, #0x16]
+ mov r1, r10
+ mov r2, r7
+ str r6, [sp, #0x4]
+ str r5, [sp, #0x8]
+ ldrh r3, [r3, #0x10]
+ bl WM_SetMPDataToPortEx
+ add r1, r10, #0x800
+ ldrh r2, [r1, #0xa]
+ cmp r0, #0x2
+ add r2, r2, #0x1
+ and r2, r2, #0x3
+ strh r2, [r1, #0xa]
+ beq _020DAA54
+ cmp r0, #0x0
+ movne r0, #0x5
+ strneh r0, [r1, #0x1c]
+ movne r4, r5
+_020DAA54:
+ mov r0, r4
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020DAA64: .word WmDataSharingSetDataCallback
+_020DAA68: .word 0x0000FFFF
+
+ arm_func_start WM_EndDataSharing
+WM_EndDataSharing: ; 0x020DAA6C
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ moveq r0, #0x6
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ add r0, r4, #0x800
+ ldrh r1, [r0, #0xe]
+ cmp r1, #0x0
+ moveq r0, #0x3
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldrh r0, [r0, #0x16]
+ mov r1, #0x0
+ mov r2, r1
+ bl WM_SetPortCallback
+ add r1, r4, #0x800
+ mov r0, #0x0
+ strh r0, [r1, #0xe]
+ strh r0, [r1, #0x1c]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start WM_StartDataSharing
+WM_StartDataSharing: ; 0x020DAAC0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r10, r0
+ mov r7, r1
+ mov r6, r2
+ mov r0, #0x2
+ mov r1, #0x9
+ mov r2, #0xa
+ mov r5, r3
+ mov r9, #0x1
+ bl WMi_CheckStateEx
+_020DAAEC: ; 0x020DAAEC
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+ cmp r10, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r7, #0x10
+ addcs sp, sp, #0xc
+ movcs r0, #0x6
+ ldmcsia sp!, {r4-r11,lr}
+ bxcs lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ bl WM_GetAID
+ movs r4, r0
+ bne _020DAB4C
+ bl WMi_GetMPReadyAIDs
+ mov r9, r0
+_020DAB4C:
+ mov r1, r10
+ mov r0, #0x0
+ mov r2, #0x820
+ bl MIi_CpuClearFast
+ add r0, r10, #0x800
+ mov r2, #0x0
+ strh r2, [r0, #0x8]
+ strh r2, [r0, #0xa]
+ strh r2, [r0, #0xc]
+ strh r5, [r0, #0x10]
+ strh r7, [r0, #0x16]
+ strh r2, [r0, #0xe]
+ mov r0, #0x1
+ ldr r1, [sp, #0x30]
+ orr r0, r6, r0, lsl r4
+ cmp r1, #0x0
+ mov r0, r0, lsl #0x10
+ movne r2, #0x1
+ add r1, r10, #0x800
+ strh r2, [r1, #0x18]
+ mov r0, r0, lsr #0x10
+ strh r0, [r1, #0xe]
+ bl FUN_020DDC5C
+ add r3, r10, #0x800
+ mul r1, r5, r0
+ strh r0, [r3, #0x12]
+ strh r1, [r3, #0x14]
+ ldrh r0, [r3, #0x14]
+ cmp r0, #0x1fc
+ movhi r0, #0x0
+ strhih r0, [r3, #0xe]
+ addhi sp, sp, #0xc
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r11,lr}
+ bxhi lr
+ add r0, r0, #0x4
+ strh r0, [r3, #0x14]
+ mov r0, #0x1
+ strh r0, [r3, #0x1c]
+ cmp r4, #0x0
+ bne _020DAD04
+ orr r2, r9, #0x1
+ mov r4, #0x0
+_020DABF8:
+ ldrh r1, [r3, #0xe]
+ mov r0, r4, lsl #0x9
+ add r4, r4, #0x1
+ and r1, r1, r2
+ strh r1, [r10, r0]
+ cmp r4, #0x4
+ blt _020DABF8
+ ldr r1, _020DAD2C ; =WmDataSharingReceiveCallback_Parent
+ mov r0, r7
+ mov r2, r10
+ bl WM_SetPortCallback
+ mov r8, r10
+ mov r7, #0x0
+ mov r4, #0x2
+ mov r6, #0x1
+ ldr fp, _020DAD30 ; =WmDataSharingSetDataCallback
+ ldr r5, _020DAD34 ; =0x0000FFFF
+ b _020DACE4
+_020DAC40:
+ add r12, r10, #0x800
+ ldrh r2, [r12, #0x8]
+ mov r0, r11
+ mov r1, r10
+ add r2, r2, #0x1
+ and r2, r2, #0x3
+ strh r2, [r12, #0x8]
+ ldrh r3, [r12, #0xe]
+ mov r2, r8
+ and r3, r3, r9
+ mov r3, r3, lsl #0x10
+ mov r3, r3, lsr #0x10
+ str r3, [sp, #0x0]
+ ldrh r3, [r12, #0x16]
+ str r3, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldrh r3, [r12, #0x14]
+ bl WM_SetMPDataToPortEx
+ cmp r0, #0x7
+ bne _020DACB4
+ add r0, r10, r7, lsl #0x1
+ add r0, r0, #0x800
+ strh r5, [r0, #0x0]
+ add r0, r10, #0x800
+ ldrh r1, [r0, #0xa]
+ add r1, r1, #0x1
+ and r1, r1, #0x3
+ strh r1, [r0, #0xa]
+ b _020DACDC
+_020DACB4:
+ cmp r0, #0x0
+ beq _020DACDC
+ cmp r0, #0x2
+ addne r0, r10, #0x800
+ movne r1, #0x5
+ strneh r1, [r0, #0x1c]
+ addne sp, sp, #0xc
+ movne r0, #0x1
+ ldmneia sp!, {r4-r11,lr}
+ bxne lr
+_020DACDC:
+ add r8, r8, #0x200
+ add r7, r7, #0x1
+_020DACE4:
+ add r0, r10, #0x800
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x1
+ movne r0, r6
+ moveq r0, r4
+ cmp r7, r0
+ blt _020DAC40
+ b _020DAD1C
+_020DAD04:
+ ldr r1, _020DAD38 ; =WmDataSharingReceiveCallback_Child
+ mov r4, #0x3
+ mov r0, r7
+ mov r2, r10
+ strh r4, [r3, #0xa]
+ bl WM_SetPortCallback
+_020DAD1C:
+ mov r0, #0x0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020DAD2C: .word WmDataSharingReceiveCallback_Parent
+_020DAD30: .word WmDataSharingSetDataCallback
+_020DAD34: .word 0x0000FFFF
+_020DAD38: .word WmDataSharingReceiveCallback_Child
+
+ arm_func_start WM_EndKeySharing
+WM_EndKeySharing: ; 0x020DAD3C
+ ldr ip, _020DAD44 ; =WM_EndDataSharing
+ bx r12
+ .balign 4
+_020DAD44: .word WM_EndDataSharing
+
+ arm_func_start WM_StartKeySharing
+WM_StartKeySharing: ; 0x020DAD48
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020DAD70 ; =0x0000FFFF
+ mov r12, #0x1
+ mov r3, #0x2
+ str r12, [sp, #0x0]
+ bl WM_StartDataSharing
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020DAD70: .word 0x0000FFFF
+
+ arm_func_start WM_SetEntry
+WM_SetEntry: ; 0x020DAD74
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r0, #0x2
+ mov r1, #0x7
+ mov r2, #0x9
+ bl WMi_CheckStateEx
+_020DAD94: ; 0x020DAD94
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, r5
+ mov r0, #0x21
+ bl WMi_SetCallbackTable
+ mov r2, r4
+ mov r0, #0x21
+ mov r1, #0x1
+ bl WMi_SendCommand
+_020DADC0: ; 0x020DADC0
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_MeasureChannel
+WM_MeasureChannel: ; 0x020DADD4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl WMi_GetSystemWork
+ mov r0, #0x1
+ mov r1, #0x2
+ bl WMi_CheckStateEx
+_020DADFC: ; 0x020DADFC
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ mov r1, r7
+ mov r0, #0x1e
+ bl WMi_SetCallbackTable
+ ldrh r2, [sp, #0x20]
+ mov r3, #0x1e
+ add r0, sp, #0x0
+ mov r1, #0xa
+ strh r3, [sp, #0x0]
+ strh r6, [sp, #0x2]
+ strh r5, [sp, #0x4]
+ strh r4, [sp, #0x6]
+ strh r2, [sp, #0x8]
+ bl WMi_SendCommandDirect
+_020DAE40: ; 0x020DAE40
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WM_SetLifeTime
+WM_SetLifeTime: ; 0x020DAE54
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl WMi_CheckIdle
+_020DAE70: ; 0x020DAE70
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ mov r1, r7
+ mov r0, #0x1d
+ bl WMi_SetCallbackTable
+ ldrh r12, [sp, #0x20]
+ str r4, [sp, #0x0]
+ mov r2, r6
+ mov r3, r5
+ mov r0, #0x1d
+ mov r1, #0x4
+ str r12, [sp, #0x4]
+ bl WMi_SendCommand
+_020DAEAC: ; 0x020DAEAC
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WM_SetBeaconIndication
+WM_SetBeaconIndication: ; 0x020DAEC0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+_020DAECC: ; 0x020DAECC
+ mov r4, r1
+ bl WMi_CheckIdle
+_020DAED4: ; 0x020DAED4
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ cmp r4, #0x0
+ beq _020DAF00
+ cmp r4, #0x1
+ addne sp, sp, #0x4
+ movne r0, #0x6
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+_020DAF00:
+ mov r1, r5
+ mov r0, #0x19
+ bl WMi_SetCallbackTable
+ mov r2, r4
+ mov r0, #0x19
+ mov r1, #0x1
+ bl WMi_SendCommand
+_020DAF1C: ; 0x020DAF1C
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start WM_SetGameInfo
+WM_SetGameInfo: ; 0x020DAF30
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r0, #0x2
+ mov r1, #0x7
+ mov r2, #0x9
+ mov r4, r3
+ bl WMi_CheckStateEx
+_020DAF58: ; 0x020DAF58
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ cmp r5, #0x70
+ addhi sp, sp, #0xc
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r7,lr}
+ bxhi lr
+ ldr r1, _020DAFF4 ; =0x021D68C0
+ mov r0, r6
+ mov r2, r5
+ bl MIi_CpuCopy16
+ ldr r0, _020DAFF4 ; =0x021D68C0
+ mov r1, r5
+ bl DC_StoreRange
+ mov r1, r7
+ mov r0, #0x18
+ bl WMi_SetCallbackTable
+ ldrh r0, [sp, #0x20]
+ str r4, [sp, #0x0]
+ ldrb r1, [sp, #0x24]
+ str r0, [sp, #0x4]
+ ldr r2, _020DAFF4 ; =0x021D68C0
+ str r1, [sp, #0x8]
+ mov r3, r5
+ mov r0, #0x18
+ mov r1, #0x5
+ bl WMi_SendCommand
+_020DAFE0: ; 0x020DAFE0
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020DAFF4: .word 0x021D68C0
+
+ arm_func_start WM_SetWEPKeyEx
+WM_SetWEPKeyEx: ; 0x020DAFF8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl WMi_CheckIdle
+_020DB014: ; 0x020DB014
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r6, #0x3
+ addhi sp, sp, #0x4
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r7,lr}
+ bxhi lr
+ cmp r6, #0x0
+ beq _020DB060
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ mov r0, r4
+ mov r1, #0x50
+ bl DC_StoreRange
+_020DB060:
+ mov r1, r7
+ mov r0, #0x27
+ bl WMi_SetCallbackTable
+ mov r2, r6
+ mov r3, r4
+ mov r0, #0x27
+ mov r1, #0x3
+ str r5, [sp, #0x0]
+ bl WMi_SendCommand
+_020DB084: ; 0x020DB084
+ cmp r0, #0x0
+ moveq r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start WM_SetWEPKeyEx2
+WM_SetWEPKeyEx2: ; 0x020DB098
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl WMi_CheckIdle
+_020DB0AC: ; 0x020DB0AC
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ cmp r5, #0x3
+ movhi r0, #0x6
+ ldmhiia sp!, {r4-r6,lr}
+ bxhi lr
+ cmp r5, #0x0
+ beq _020DB0EC
+ cmp r4, #0x0
+ moveq r0, #0x6
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mov r0, r4
+ mov r1, #0x50
+ bl DC_StoreRange
+_020DB0EC:
+ mov r1, r6
+ mov r0, #0x14
+ bl WMi_SetCallbackTable
+ mov r2, r5
+ mov r3, r4
+ mov r0, #0x14
+ mov r1, #0x2
+ bl WMi_SendCommand
+_020DB10C: ; 0x020DB10C
+ cmp r0, #0x0
+ moveq r0, #0x2
+ ldmia sp!, {r4-r6,lr}
+ bx lr
diff --git a/asm/rom2.s b/asm/rom2.s
index bcd66a51..0f18b45a 100644
--- a/asm/rom2.s
+++ b/asm/rom2.s
@@ -1,150 +1,7 @@
-/* rom2.s TODO: Disassemble */
- .include "asm/macros.inc"
- .section .text
+ .include "asm/macros.inc"
+ .include "global.inc"
- .incbin "baserom.nds", 0xD9150, 0x16AE0
+ .data
- arm_func_start _ll_mul
-_ll_mul: ; 0x020EBC30
- stmdb sp!, {r4, r5, lr}
- umull r5, r4, r0, r2
- mla r4, r0, r3, r4
- mla r4, r2, r1, r4
- mov r1, r4
- mov r0, r5
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start _ll_shl
-_ll_shl: ; 0x020EBC50
- ands r2, r2, #0x3F
- bxeq lr
- subs r3, r2, #0x20
- bge _020EBC74
- rsb r3, r2, #0x20
- mov r1, r1, lsl r2
- orr r1, r1, r0, lsr r3
- mov r0, r0, lsl r2
- bx lr
-_020EBC74:
- mov r1, r0, lsl r3
- mov r0, #0x0
- bx lr
-
- arm_func_start _s32_div_f
-_s32_div_f: ; 0x20EBC80
- ; Test whether the args have different signs
- eor ip, r0, r1
- and ip, ip, #0x80000000
- ; Test the sign of the numerator, and make it positive
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- addlt ip, ip, #1
- ; Make the denominator positive, also test for div0
- cmp r1, #0x0
- rsblt r1, r1, #0x0
- beq _020EBE78
- ; If the numerator is less than the denominator, return (0, numerator)
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- bcc _020EBE78
- ; Do the actual division
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- nop
- .rept 32
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- .endr
- mov r1, r3
-_020EBE78:
- ; If the signs differed originally, negate quotient
- ands r3, ip, #0x80000000
- rsbne r0, r0, #0x0
- ; If the numerator was negative, negate remainder
- ands r3, ip, #0x1
- rsbne r1, r1, #0x0
- bx lr
-
-; required to make the linker happy :
-
- arm_func_start _u32_div_f
-_u32_div_f: ; 0x020EBE8C
- cmp r1, #0x0
- bxeq lr ; About as wrong as we can be
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- bxcc lr
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- nop
- .rept 32
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- .endr
- mov r1, r3
- bx lr
-
- .incbin "baserom.nds", 0xF0070, 0x55C
-
- arm_func_start _fp_init
-_fp_init: ; 0x020EC5CC
- bx lr
-
- arm_func_start sys_writec
-sys_writec: ; 0x020EC5D0
- str lr, [sp, #-4]!
- mov r1, r0
- mov r0, #0x3
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_readc
-sys_readc: ; 0x020EC5E4
- str lr, [sp, #-4]!
- mov r1, #0x0
- mov r0, #0x7
- swi 0x123456
- ldr pc, [sp], #0x4
-
- .incbin "baserom.nds", 0xF05F8, 0x9C
-
- arm_func_start __call_static_initializers
-__call_static_initializers: ; 0x020EC694
-.incbin "baserom.nds", 0xF0694, 0x7C
-
- .section .data
-.incbin "baserom.nds", 0xF0710, 0x3F8
+.incbin "baserom.nds", 0xF0710, 0x3F8 ; this does not seem to be code
diff --git a/asm/secure.s b/asm/secure.s
index 18313c93..8bfb7ede 100644
--- a/asm/secure.s
+++ b/asm/secure.s
@@ -11,7 +11,15 @@ FUN_0200019E: ; 0x0200019E
bx lr
thumb_func_end FUN_0200019E
-.incbin "baserom.nds", 0x41A2, 0x450
+.incbin "baserom.nds", 0x41A2, 0x15C
+
+ non_word_aligned_thumb_func_start FUN_020002FE
+FUN_020002FE: ; 0x020002FE
+ swi 11
+ bx lr
+
+.incbin "baserom.nds", 0x4302, 0x2F0
+
non_word_aligned_thumb_func_start FUN_020005F2
FUN_020005F2:
diff --git a/asm/unk_02000E0C.s b/asm/unk_02000E0C.s
index 506ff81a..93c07623 100644
--- a/asm/unk_02000E0C.s
+++ b/asm/unk_02000E0C.s
@@ -286,7 +286,7 @@ _02001032:
blx CARD_IsPulledOut
cmp r0, #0x0
beq _02001048
- blx FUN_020D5180
+ blx PM_ForceToPowerOff
b _0200105C
_02001048:
ldrh r1, [r4, #0x0]
diff --git a/asm/unk_020023C0.s b/asm/unk_020023C0.s
index ec0f13f1..899a8122 100644
--- a/asm/unk_020023C0.s
+++ b/asm/unk_020023C0.s
@@ -1,8340 +1,8340 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020023C0
-FUN_020023C0: ; 0x020023C0
- push {r3-r6, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x24
- ldrb r1, [r1, #0x0]
- add r6, r4, #0x0
- add r6, #0x1c
- cmp r1, #0x6
- bls _020023D6
- b _02002838
-_020023D6:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_020023E2: ; jump table (using 16-bit offset)
- .short _020023F0 - _020023E2 - 2; case 0
- .short _02002742 - _020023E2 - 2; case 1
- .short _0200275C - _020023E2 - 2; case 2
- .short _02002786 - _020023E2 - 2; case 3
- .short _020027B6 - _020023E2 - 2; case 4
- .short _0200280C - _020023E2 - 2; case 5
- .short _02002818 - _020023E2 - 2; case 6
-_020023F0:
- ldr r0, _02002658 ; =0x021C48B8
- ldr r1, [r0, #0x44]
- mov r0, #0x3
- tst r0, r1
- beq _02002402
- ldrb r0, [r6, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- bne _02002414
-_02002402:
- ldr r0, _0200265C ; =0x021C48F8
- ldrh r0, [r0, #0x22]
- cmp r0, #0x0
- beq _02002432
- ldr r0, _02002660 ; =0x02106FC4
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002432
-_02002414:
- add r0, r4, #0x0
- mov r1, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x19
- beq _02002432
- ldr r1, _02002660 ; =0x02106FC4
- mov r0, #0x40
- ldrb r2, [r1, #0x0]
- orr r0, r2
- strb r0, [r1, #0x0]
-_02002432:
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0200248C
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x19
- beq _0200248C
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- sub r1, r0, #0x1
- add r0, r4, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- ldr r0, _02002660 ; =0x02106FC4
- ldrb r0, [r0, #0x0]
- lsl r1, r0, #0x1f
- lsr r1, r1, #0x1f
- beq _02002486
- ldr r1, _02002658 ; =0x021C48B8
- ldr r2, [r1, #0x48]
- mov r1, #0x3
- tst r1, r2
- bne _02002478
- ldr r1, _0200265C ; =0x021C48F8
- ldrh r1, [r1, #0x20]
- cmp r1, #0x0
- beq _02002486
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002486
-_02002478:
- ldrb r1, [r6, #0x0]
- mov r0, #0x10
- add r4, #0x26
- orr r0, r1
- strb r0, [r6, #0x0]
- mov r0, #0x0
- strb r0, [r4, #0x0]
-_02002486:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200248C:
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r1, r0, #0x19
- add r0, r4, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- ldr r0, [r4, #0x0]
- ldrh r5, [r0, #0x0]
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- mov r0, #0xf1
- lsl r0, r0, #0x8
- cmp r5, r0
- bne _020024B0
- bl ErrorHandling
-_020024B0:
- ldr r0, _02002664 ; =0x0000F0FD
- cmp r5, r0
- bgt _020024DA
- bge _0200250E
- ldr r1, _02002668 ; =0x000025BD
- cmp r5, r1
- bgt _020024D0
- sub r0, r1, #0x1
- cmp r5, r0
- blt _020024CE
- bne _020024C8
- b _020026D8
-_020024C8:
- cmp r5, r1
- bne _020024CE
- b _020026EC
-_020024CE:
- b _02002700
-_020024D0:
- mov r0, #0xe
- lsl r0, r0, #0xc
- cmp r5, r0
- beq _020024F2
- b _02002700
-_020024DA:
- ldr r0, _0200266C ; =0x0000FFFE
- cmp r5, r0
- bgt _020024E4
- beq _0200251A
- b _02002700
-_020024E4:
- add r0, r0, #0x1
- cmp r5, r0
- beq _020024EC
- b _02002700
-_020024EC:
- add sp, #0xc
- mov r0, #0x1
- pop {r3-r6, pc}
-_020024F2:
- ldrb r0, [r4, #0xa]
- mov r1, #0x1
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0x9]
- bl FUN_02002E4C
- ldrb r1, [r4, #0xf]
- ldrb r2, [r4, #0xd]
- add sp, #0xc
- add r0, r1, r0
- add r0, r2, r0
- strb r0, [r4, #0xd]
- mov r0, #0x2
- pop {r3-r6, pc}
-_0200250E:
- ldr r0, [r4, #0x0]
- add sp, #0xc
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- mov r0, #0x2
- pop {r3-r6, pc}
-_0200251A:
- ldr r0, [r4, #0x0]
- sub r0, r0, #0x2
- str r0, [r4, #0x0]
- bl FUN_0201B8E0
- lsl r0, r0, #0x10
- ldr r1, _02002670 ; =0x0000FE06
- lsr r0, r0, #0x10
- cmp r0, r1
- bgt _02002552
- blt _02002532
- b _02002678
-_02002532:
- mov r1, #0x2
- lsl r1, r1, #0x8
- sub r1, r0, r1
- cmp r1, #0x4
- bhi _0200255C
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02002548: ; jump table (using 16-bit offset)
- .short _020025B4 - _02002548 - 2; case 0
- .short _020025DE - _02002548 - 2; case 1
- .short _02002600 - _02002548 - 2; case 2
- .short _02002618 - _02002548 - 2; case 3
- .short _02002624 - _02002548 - 2; case 4
-_02002552:
- mov r1, #0xff
- lsl r1, r1, #0x8
- cmp r0, r1
- bgt _0200255E
- beq _02002566
-_0200255C:
- b _020026CA
-_0200255E:
- add r1, r1, #0x1
- cmp r0, r1
- beq _02002630
- b _020026CA
-_02002566:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0xff
- bne _02002596
- ldrb r0, [r4, #0x11]
- ldrb r2, [r4, #0x17]
- sub r1, r0, #0x1
- lsr r0, r1, #0x1f
- add r0, r1, r0
- asr r0, r0, #0x1
- add r0, #0x64
- strb r0, [r4, #0x17]
- cmp r2, #0x64
- blo _02002644
- cmp r2, #0x6b
- bhs _02002644
- sub r2, #0x64
- lsl r0, r2, #0x10
- lsr r0, r0, #0x10
- b _0200259E
-_02002596:
- cmp r0, #0x64
- blo _0200259E
- strb r0, [r4, #0x17]
- b _020026CA
-_0200259E:
- lsl r1, r0, #0x1
- add r0, r1, #0x1
- strb r0, [r4, #0x11]
- add r0, r1, #0x2
- strb r0, [r4, #0x13]
- ldrb r0, [r4, #0x11]
- ldrb r1, [r4, #0x12]
- ldrb r2, [r4, #0x13]
- bl FUN_0201C05C
- b _020026CA
-_020025B4:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- ldrb r1, [r4, #0xc]
- ldrb r2, [r4, #0xd]
- add r0, r4, #0x0
- bl FUN_0201C1EC
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- beq _020026CA
- ldr r0, [r4, #0x4]
- bl FUN_020191D0
- b _020026CA
-_020025DE:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- add r1, r4, #0x0
- add r1, #0x26
- strb r0, [r1, #0x0]
- ldr r0, [r4, #0x0]
- bl FUN_0201B8B8
- str r0, [r4, #0x0]
- mov r0, #0x6
- add r4, #0x24
- strb r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002600:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- strh r0, [r4, #0x2a]
- ldr r0, [r4, #0x0]
- bl FUN_0201B8B8
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002618:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- strb r0, [r4, #0xc]
- b _020026CA
-_02002624:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- strb r0, [r4, #0xd]
- b _020026CA
-_02002630:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x64
- beq _02002646
- cmp r0, #0xc8
- beq _0200264E
-_02002644:
- b _020026CA
-_02002646:
- mov r0, #0x0
- strh r0, [r4, #0x14]
- strb r0, [r4, #0x16]
- b _020026CA
-_0200264E:
- ldr r0, _02002674 ; =0x0000FFFC
- strh r0, [r4, #0x14]
- mov r0, #0x0
- strb r0, [r4, #0x16]
- b _020026CA
- .balign 4
-_02002658: .word 0x021C48B8
-_0200265C: .word 0x021C48F8
-_02002660: .word 0x02106FC4
-_02002664: .word 0x0000F0FD
-_02002668: .word 0x000025BD
-_0200266C: .word 0x0000FFFE
-_02002670: .word 0x0000FE06
-_02002674: .word 0x0000FFFC
-_02002678:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_0201B914
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- mov r0, #0xfe
- lsl r0, r0, #0x8
- cmp r1, r0
- beq _020026AE
- add r0, r0, #0x1
- cmp r1, r0
- bne _020026CA
- add r0, r4, #0x0
- mov r1, #0x2
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- ldr r0, [r4, #0x0]
- bl FUN_0201B8B8
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026AE:
- add r0, r4, #0x0
- mov r1, #0x3
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- ldr r0, [r4, #0x0]
- bl FUN_0201B8B8
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026CA:
- ldr r0, [r4, #0x0]
- bl FUN_0201B8B8
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x2
- pop {r3-r6, pc}
-_020026D8:
- add r0, r4, #0x0
- mov r1, #0x2
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026EC:
- add r0, r4, #0x0
- mov r1, #0x3
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002700:
- ldrb r0, [r6, #0x0]
- add r1, r5, #0x0
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- bl FUN_02002D94
- add r5, r0, #0x0
- ldrb r0, [r4, #0xc]
- add r2, r5, #0x0
- add r3, r5, #0x0
- str r0, [sp, #0x0]
- ldrb r0, [r4, #0xd]
- add r2, #0x80
- add r3, #0x81
- str r0, [sp, #0x4]
- ldrh r0, [r4, #0x14]
- add r1, r5, #0x0
- str r0, [sp, #0x8]
- ldrb r2, [r2, #0x0]
- ldrb r3, [r3, #0x0]
- ldr r0, [r4, #0x4]
- bl FUN_0201974C
- add r5, #0x80
- ldrb r1, [r5, #0x0]
- ldrb r0, [r4, #0xe]
- ldrb r2, [r4, #0xc]
- add sp, #0xc
- add r0, r1, r0
- add r0, r2, r0
- strb r0, [r4, #0xc]
- mov r0, #0x0
- pop {r3-r6, pc}
-_02002742:
- bl FUN_02002B3C
- cmp r0, #0x0
- beq _02002756
- add r0, r4, #0x0
- bl FUN_02002A00
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002756:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200275C:
- bl FUN_02002B18
- cmp r0, #0x0
- beq _02002780
- add r0, r4, #0x0
- bl FUN_02002A00
- ldrb r1, [r4, #0x12]
- ldr r0, [r4, #0x4]
- bl FUN_02019620
- ldrb r0, [r4, #0xa]
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0xb]
- strb r0, [r4, #0xd]
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002780:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002786:
- bl FUN_02002B18
- cmp r0, #0x0
- beq _020027B0
- add r0, r4, #0x0
- bl FUN_02002A00
- ldrb r0, [r4, #0x9]
- mov r1, #0x1
- bl FUN_02002E4C
- ldrb r1, [r4, #0xf]
- add r1, r1, r0
- add r0, r4, #0x0
- add r0, #0x27
- strb r1, [r0, #0x0]
- ldrb r0, [r4, #0xa]
- strb r0, [r4, #0xc]
- mov r0, #0x4
- add r4, #0x24
- strb r0, [r4, #0x0]
-_020027B0:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020027B6:
- add r0, #0x27
- ldrb r2, [r0, #0x0]
- cmp r2, #0x0
- beq _02002800
- cmp r2, #0x4
- ldrb r5, [r4, #0x12]
- bge _020027D8
- lsl r3, r5, #0x4
- orr r3, r5
- lsl r3, r3, #0x18
- ldr r0, [r4, #0x4]
- mov r1, #0x0
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- mov r1, #0x0
- b _020027F2
-_020027D8:
- lsl r3, r5, #0x4
- orr r3, r5
- lsl r3, r3, #0x18
- ldr r0, [r4, #0x4]
- mov r1, #0x0
- mov r2, #0x4
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- add r0, r4, #0x0
- add r0, #0x27
- ldrb r0, [r0, #0x0]
- sub r1, r0, #0x4
-_020027F2:
- add r0, r4, #0x0
- add r0, #0x27
- strb r1, [r0, #0x0]
- ldr r0, [r4, #0x4]
- bl FUN_020191D0
- b _02002806
-_02002800:
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002806:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200280C:
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002818:
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0200282C
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- add r4, #0x26
- sub r0, r0, #0x1
- b _02002830
-_0200282C:
- mov r0, #0x0
- add r4, #0x24
-_02002830:
- add sp, #0xc
- strb r0, [r4, #0x0]
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002838:
- mov r0, #0x1
- add sp, #0xc
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02002840
-FUN_02002840: ; 0x02002840
- ldr r1, _02002848 ; =0x02106FC4
- strh r0, [r1, #0x2]
- bx lr
- nop
-_02002848: .word 0x02106FC4
-
- thumb_func_start FUN_0200284C
-FUN_0200284C: ; 0x0200284C
- ldr r1, _02002874 ; =0x02106FC4
- add r0, #0x1c
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002862
- ldrb r2, [r0, #0x2]
- mov r1, #0xff
- bic r2, r1
- strb r2, [r0, #0x2]
- bx lr
-_02002862:
- ldrb r2, [r0, #0x1]
- mov r1, #0x60
- bic r2, r1
- strb r2, [r0, #0x1]
- ldrb r2, [r0, #0x1]
- mov r1, #0x1f
- bic r2, r1
- strb r2, [r0, #0x1]
- bx lr
- .balign 4
-_02002874: .word 0x02106FC4
-
- thumb_func_start FUN_02002878
-FUN_02002878: ; 0x02002878
- push {r4-r7, lr}
- sub sp, #0x2c
- add r5, r0, #0x0
- ldr r0, _020029F8 ; =0x02106FC4
- add r4, r5, #0x0
- ldrb r0, [r0, #0x0]
- add r4, #0x1c
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1f
- beq _0200288E
- b _020029F4
-_0200288E:
- ldrb r0, [r4, #0x1]
- lsl r1, r0, #0x1b
- lsr r2, r1, #0x1b
- beq _020028AC
- mov r1, #0x1f
- add r2, #0xff
- bic r0, r1
- lsl r1, r2, #0x18
- lsr r2, r1, #0x18
- mov r1, #0x1f
- and r1, r2
- orr r0, r1
- add sp, #0x2c
- strb r0, [r4, #0x1]
- pop {r4-r7, pc}
-_020028AC:
- ldr r0, [r5, #0x4]
- bl FUN_0201AB08
- str r0, [sp, #0x20]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB14
- str r0, [sp, #0x24]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB18
- str r0, [sp, #0x28]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
- ldr r1, _020029F8 ; =0x02106FC4
- ldrh r6, [r1, #0x2]
- ldr r1, [sp, #0x28]
- add r7, r1, #0x2
- ldr r1, [sp, #0x24]
- add r2, r6, #0x0
- add r0, r1, r0
- str r0, [sp, #0x1c]
- add r0, r0, #0x1
- str r0, [sp, #0x18]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- add r2, #0x12
- mov r12, r2
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =0x020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- mov r3, r12
- lsl r2, r2, #0x2
- add r2, r3, r2
- ldr r3, [sp, #0x18]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x20]
- add r0, r0, #0x2
- str r0, [sp, #0x10]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- add r7, r6, #0x0
- ldr r0, [r5, #0x4]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =0x020ECB50
- add r7, #0x13
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x10]
- ldr r0, [r0, #0x0]
- lsl r2, r2, #0x2
- add r2, r7, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x28]
- add r7, r6, #0x0
- add r0, r0, #0x3
- str r0, [sp, #0x14]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- add r7, #0x14
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =0x020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x18]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x2
- add r2, r7, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x14]
- add r6, #0x15
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =0x020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x10]
- lsl r2, r2, #0x2
- add r2, r6, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- ldr r0, [r0, #0x0]
- bl FUN_02017CD0
- ldrb r1, [r4, #0x1]
- mov r0, #0x1f
- bic r1, r0
- mov r0, #0x8
- orr r0, r1
- strb r0, [r4, #0x1]
- ldrb r2, [r4, #0x1]
- mov r1, #0x60
- add r0, r2, #0x0
- bic r0, r1
- lsl r1, r2, #0x19
- lsr r1, r1, #0x1e
- add r1, r1, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1e
- lsr r1, r1, #0x19
- orr r0, r1
- strb r0, [r4, #0x1]
-_020029F4:
- add sp, #0x2c
- pop {r4-r7, pc}
- .balign 4
-_020029F8: .word 0x02106FC4
-_020029FC: .word 0x020ECB50
-
- thumb_func_start FUN_02002A00
-FUN_02002A00: ; 0x02002A00
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- ldr r0, [r5, #0x4]
- bl FUN_0201AB08
- str r0, [sp, #0x10]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB14
- str r0, [sp, #0x14]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB18
- add r6, r0, #0x0
- ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
- ldr r1, _02002A90 ; =0x02106FC4
- add r7, r6, #0x2
- ldrh r4, [r1, #0x2]
- ldr r1, [sp, #0x14]
- add r6, r1, r0
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x2
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x4]
- add r2, r4, #0x0
- add r2, #0xa
- add r3, r6, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- ldr r1, [sp, #0x10]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x2
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x4]
- add r4, #0xb
- add r3, r6, #0x2
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- ldr r1, [sp, #0x10]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x10]
- ldr r0, [r0, #0x0]
- bl FUN_02017CD0
- add sp, #0x18
- pop {r3-r7, pc}
- nop
-_02002A90: .word 0x02106FC4
-
- thumb_func_start FUN_02002A94
-FUN_02002A94: ; 0x02002A94
- push {r3, lr}
- ldr r0, _02002ACC ; =0x021C48B8
- ldr r1, [r0, #0x48]
- mov r0, #0x3
- tst r0, r1
- bne _02002AB2
- ldr r0, _02002AD0 ; =0x021C48F8
- ldrh r0, [r0, #0x20]
- cmp r0, #0x0
- beq _02002AC6
- ldr r0, _02002AD4 ; =0x02106FC4
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002AC6
-_02002AB2:
- ldr r0, _02002AD8 ; =0x000005DC
- bl FUN_020054C8
- ldr r1, _02002AD4 ; =0x02106FC4
- mov r0, #0x80
- ldrb r2, [r1, #0x0]
- orr r0, r2
- strb r0, [r1, #0x0]
- mov r0, #0x1
- pop {r3, pc}
-_02002AC6:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_02002ACC: .word 0x021C48B8
-_02002AD0: .word 0x021C48F8
-_02002AD4: .word 0x02106FC4
-_02002AD8: .word 0x000005DC
-
- thumb_func_start FUN_02002ADC
-FUN_02002ADC: ; 0x02002ADC
- push {r4, lr}
- add r2, r0, #0x0
- add r2, #0x1c
- ldrb r1, [r2, #0x2]
- add r4, r1, #0x0
- cmp r4, #0x64
- bne _02002AEE
- mov r0, #0x1
- pop {r4, pc}
-_02002AEE:
- mov r3, #0xff
- bic r1, r3
- add r3, r4, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- orr r1, r3
- strb r1, [r2, #0x2]
- ldr r1, _02002B14 ; =0x02106FC4
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1a
- lsr r1, r1, #0x1f
- beq _02002B10
- bl FUN_02002A94
- pop {r4, pc}
-_02002B10:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-_02002B14: .word 0x02106FC4
-
- thumb_func_start FUN_02002B18
-FUN_02002B18: ; 0x02002B18
- push {r4, lr}
- ldr r1, _02002B38 ; =0x02106FC4
- add r4, r0, #0x0
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002B2C
- bl FUN_02002ADC
- pop {r4, pc}
-_02002B2C:
- bl FUN_02002878
- add r0, r4, #0x0
- bl FUN_02002A94
- pop {r4, pc}
- .balign 4
-_02002B38: .word 0x02106FC4
-
- thumb_func_start FUN_02002B3C
-FUN_02002B3C: ; 0x02002B3C
- push {r3, lr}
- ldr r1, _02002B5C ; =0x02106FC4
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002B52
- bl FUN_02002ADC
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, pc}
-_02002B52:
- bl FUN_02002A94
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, pc}
- .balign 4
-_02002B5C: .word 0x02106FC4
-
- thumb_func_start FUN_02002B60
-FUN_02002B60: ; 0x02002B60
- ldr r2, _02002B78 ; =0x02106FC4
- mov r1, #0x1
- ldrb r3, [r2, #0x0]
- lsl r0, r0, #0x18
- bic r3, r1
- lsr r1, r0, #0x18
- mov r0, #0x1
- and r0, r1
- orr r0, r3
- strb r0, [r2, #0x0]
- bx lr
- nop
-_02002B78: .word 0x02106FC4
-
- thumb_func_start FUN_02002B7C
-FUN_02002B7C: ; 0x02002B7C
- push {r3-r4}
- ldr r1, _02002BB4 ; =0x02106FC4
- mov r3, #0x4
- ldrb r2, [r1, #0x0]
- mov r4, #0x1
- bic r2, r3
- add r3, r0, #0x0
- and r3, r4
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- lsl r3, r3, #0x1f
- lsr r3, r3, #0x1d
- orr r2, r3
- asr r0, r0, #0x1
- and r0, r4
- strb r2, [r1, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- lsl r0, r0, #0x1f
- ldrb r2, [r1, #0x0]
- mov r3, #0x20
- lsr r0, r0, #0x1a
- bic r2, r3
- orr r0, r2
- strb r0, [r1, #0x0]
- pop {r3-r4}
- bx lr
- nop
-_02002BB4: .word 0x02106FC4
-
- thumb_func_start FUN_02002BB8
-FUN_02002BB8: ; 0x02002BB8
- ldr r2, _02002BD0 ; =0x02106FC4
- lsl r0, r0, #0x18
- ldrb r3, [r2, #0x0]
- lsr r0, r0, #0x18
- mov r1, #0x10
- lsl r0, r0, #0x1f
- bic r3, r1
- lsr r0, r0, #0x1b
- orr r0, r3
- strb r0, [r2, #0x0]
- bx lr
- nop
-_02002BD0: .word 0x02106FC4
-
- thumb_func_start FUN_02002BD4
-FUN_02002BD4: ; 0x02002BD4
- ldr r0, _02002BE0 ; =0x02106FC4
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x1f
- bx lr
- nop
-_02002BE0: .word 0x02106FC4
-
- thumb_func_start FUN_02002BE4
-FUN_02002BE4: ; 0x02002BE4
- ldr r1, _02002BF0 ; =0x02106FC4
- mov r0, #0x40
- ldrb r2, [r1, #0x0]
- bic r2, r0
- strb r2, [r1, #0x0]
- bx lr
- .balign 4
-_02002BF0: .word 0x02106FC4
-
- thumb_func_start FUN_02002BF4
-FUN_02002BF4: ; 0x02002BF4
- ldr r0, _02002C00 ; =0x02106FC4
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- bx lr
- nop
-_02002C00: .word 0x02106FC4
-
- thumb_func_start FUN_02002C04
-FUN_02002C04: ; 0x02002C04
- ldr r1, _02002C10 ; =0x02106FC4
- mov r0, #0x80
- ldrb r2, [r1, #0x0]
- bic r2, r0
- strb r2, [r1, #0x0]
- bx lr
- .balign 4
-_02002C10: .word 0x02106FC4
-
- thumb_func_start FUN_02002C14
-FUN_02002C14: ; 0x02002C14
- push {r4, lr}
- ldr r0, _02002C44 ; =0x02106FCC
- ldr r4, _02002C48 ; =0x02106FC8
- mov r1, #0x0
- str r0, [r4, #0x0]
- add r2, r1, #0x0
- add r0, r1, #0x0
-_02002C22:
- ldr r3, [r4, #0x0]
- add r1, r1, #0x1
- add r3, r3, r2
- add r3, #0x84
- str r0, [r3, #0x0]
- ldr r3, [r4, #0x0]
- add r3, r3, r2
- add r3, #0x94
- add r2, r2, #0x4
- str r0, [r3, #0x0]
- cmp r1, #0x4
- blo _02002C22
- ldr r0, _02002C4C ; =0x020ECB64
- bl FUN_0201BCBC
- pop {r4, pc}
- nop
-_02002C44: .word 0x02106FCC
-_02002C48: .word 0x02106FC8
-_02002C4C: .word 0x020ECB64
-
- thumb_func_start FUN_02002C50
-FUN_02002C50: ; 0x02002C50
- push {r3-r4, lr}
- sub sp, #0x4
- str r1, [sp, #0x0]
- lsl r4, r0, #0x2
- ldr r1, _02002C78 ; =0x020ECB54
- ldr r3, _02002C7C ; =0x020ECB56
- ldrh r1, [r1, r4]
- ldrh r3, [r3, r4]
- mov r0, #0xe
- mov r2, #0x1
- bl FUN_02021590
- ldr r1, _02002C80 ; =0x02106FC8
- ldr r1, [r1, #0x0]
- add r1, r1, r4
- add r1, #0x94
- str r0, [r1, #0x0]
- add sp, #0x4
- pop {r3-r4, pc}
- nop
-_02002C78: .word 0x020ECB54
-_02002C7C: .word 0x020ECB56
-_02002C80: .word 0x02106FC8
-
- thumb_func_start FUN_02002C84
-FUN_02002C84: ; 0x02002C84
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r5, r1, #0x0
- cmp r4, #0x4
- blt _02002C92
- bl ErrorHandling
-_02002C92:
- ldr r0, _02002CBC ; =0x02106FC8
- lsl r4, r4, #0x2
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002CA6
- bl ErrorHandling
-_02002CA6:
- ldr r0, _02002CBC ; =0x02106FC8
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r2, r5, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_020215E0
- pop {r3-r5, pc}
- nop
-_02002CBC: .word 0x02106FC8
-
- thumb_func_start FUN_02002CC0
-FUN_02002CC0: ; 0x02002CC0
- push {r4, lr}
- add r4, r0, #0x0
- cmp r4, #0x4
- blt _02002CCC
- bl ErrorHandling
-_02002CCC:
- ldr r0, _02002CF4 ; =0x02106FC8
- lsl r4, r4, #0x2
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002CE0
- bl ErrorHandling
-_02002CE0:
- ldr r0, _02002CF4 ; =0x02106FC8
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- mov r2, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_020215E0
- pop {r4, pc}
- .balign 4
-_02002CF4: .word 0x02106FC8
-
- thumb_func_start FUN_02002CF8
-FUN_02002CF8: ; 0x02002CF8
- push {r3-r7, lr}
- add r4, r0, #0x0
- cmp r4, #0x4
- blt _02002D04
- bl ErrorHandling
-_02002D04:
- ldr r0, _02002D8C ; =0x02106FC8
- lsl r6, r4, #0x2
- ldr r7, [r0, #0x0]
- add r0, r7, r6
- add r0, #0x84
- ldr r0, [r0, #0x0]
- mov r12, r0
- cmp r0, #0x0
- beq _02002D68
- ldr r2, _02002D90 ; =0x020ECB54
- mov r1, #0x0
- ldrh r0, [r2, r6]
- add r3, r7, #0x0
-_02002D1E:
- cmp r1, r4
- beq _02002D3E
- ldrh r5, [r2, #0x0]
- cmp r5, r0
- bne _02002D3E
- add r5, r3, #0x0
- add r5, #0x94
- ldr r5, [r5, #0x0]
- cmp r5, #0x0
- beq _02002D3E
- lsl r0, r1, #0x2
- add r2, r7, r0
- add r2, #0x84
- mov r0, r12
- str r0, [r2, #0x0]
- b _02002D48
-_02002D3E:
- add r1, r1, #0x1
- add r2, r2, #0x4
- add r3, r3, #0x4
- cmp r1, #0x4
- blo _02002D1E
-_02002D48:
- cmp r1, #0x4
- bne _02002D68
- ldr r0, _02002D8C ; =0x02106FC8
- lsl r5, r4, #0x2
- ldr r0, [r0, #0x0]
- add r0, r0, r5
- add r0, #0x84
- ldr r0, [r0, #0x0]
- bl FUN_02016A18
- ldr r0, _02002D8C ; =0x02106FC8
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, r0, r5
- add r0, #0x84
- str r1, [r0, #0x0]
-_02002D68:
- ldr r0, _02002D8C ; =0x02106FC8
- ldr r0, [r0, #0x0]
- add r0, r0, r6
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02002D88
- bl FUN_020215C8
- ldr r0, _02002D8C ; =0x02106FC8
- mov r2, #0x0
- ldr r1, [r0, #0x0]
- lsl r0, r4, #0x2
- add r0, r1, r0
- add r0, #0x94
- str r2, [r0, #0x0]
-_02002D88:
- pop {r3-r7, pc}
- nop
-_02002D8C: .word 0x02106FC8
-_02002D90: .word 0x020ECB54
-
- thumb_func_start FUN_02002D94
-FUN_02002D94: ; 0x02002D94
- push {r3, lr}
- ldr r2, _02002DAC ; =0x02106FC8
- lsl r0, r0, #0x2
- ldr r2, [r2, #0x0]
- add r0, r2, r0
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_02021750
- ldr r0, _02002DAC ; =0x02106FC8
- ldr r0, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-_02002DAC: .word 0x02106FC8
-
- thumb_func_start FUN_02002DB0
-FUN_02002DB0: ; 0x02002DB0
- push {r4, lr}
- add r3, r1, #0x0
- add r3, #0x1c
- ldrb r2, [r3, #0x1]
- lsl r2, r2, #0x18
- lsr r2, r2, #0x1f
- bne _02002DD8
- ldrb r2, [r3, #0x0]
- mov r4, #0xf
- lsl r0, r0, #0x18
- bic r2, r4
- lsr r4, r0, #0x18
- mov r0, #0xf
- and r0, r4
- orr r0, r2
- strb r0, [r3, #0x0]
- ldrb r2, [r3, #0x1]
- mov r0, #0x80
- orr r0, r2
- strb r0, [r3, #0x1]
-_02002DD8:
- add r0, r1, #0x0
- bl FUN_020023C0
- pop {r4, pc}
-
- thumb_func_start FUN_02002DE0
-FUN_02002DE0: ; 0x02002DE0
- push {r4-r6, lr}
- lsl r4, r0, #0x2
- ldr r0, _02002E10 ; =0x02106FC8
- add r5, r1, #0x0
- ldr r0, [r0, #0x0]
- add r6, r2, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002DFA
- bl ErrorHandling
-_02002DFA:
- ldr r0, _02002E10 ; =0x02106FC8
- add r1, r5, #0x0
- ldr r0, [r0, #0x0]
- add r2, r6, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_020218D8
- pop {r4-r6, pc}
- nop
-_02002E10: .word 0x02106FC8
-
- thumb_func_start FUN_02002E14
-FUN_02002E14: ; 0x02002E14
- push {r4-r6, lr}
- lsl r4, r0, #0x2
- ldr r0, _02002E48 ; =0x02106FC8
- add r5, r1, #0x0
- ldr r0, [r0, #0x0]
- add r6, r2, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002E2E
- bl ErrorHandling
-_02002E2E:
- add r0, r5, #0x0
- bl FUN_02021F2C
- add r1, r0, #0x0
- ldr r0, _02002E48 ; =0x02106FC8
- add r2, r6, #0x0
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_020218D8
- pop {r4-r6, pc}
- .balign 4
-_02002E48: .word 0x02106FC8
-
- thumb_func_start FUN_02002E4C
-FUN_02002E4C: ; 0x02002E4C
- mov r2, #0x0
- cmp r1, #0x7
- bhi _02002EAC
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02002E5E: ; jump table (using 16-bit offset)
- .short _02002E6E - _02002E5E - 2; case 0
- .short _02002E76 - _02002E5E - 2; case 1
- .short _02002E7E - _02002E5E - 2; case 2
- .short _02002E86 - _02002E5E - 2; case 3
- .short _02002E8E - _02002E5E - 2; case 4
- .short _02002E96 - _02002E5E - 2; case 5
- .short _02002E9E - _02002E5E - 2; case 6
- .short _02002EA6 - _02002E5E - 2; case 7
-_02002E6E:
- lsl r1, r0, #0x3
- ldr r0, _02002EB0 ; =0x020ECB64
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E76:
- lsl r1, r0, #0x3
- ldr r0, _02002EB4 ; =0x020ECB65
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E7E:
- lsl r1, r0, #0x3
- ldr r0, _02002EB8 ; =0x020ECB66
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E86:
- lsl r1, r0, #0x3
- ldr r0, _02002EBC ; =0x020ECB67
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E8E:
- lsl r1, r0, #0x3
- ldr r0, _02002EC0 ; =0x020ECB68
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E96:
- lsl r1, r0, #0x3
- ldr r0, _02002EC4 ; =0x020ECB69
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002E9E:
- lsl r1, r0, #0x3
- ldr r0, _02002EC8 ; =0x020ECB6A
- ldrb r2, [r0, r1]
- b _02002EAC
-_02002EA6:
- lsl r1, r0, #0x3
- ldr r0, _02002ECC ; =0x020ECB6B
- ldrb r2, [r0, r1]
-_02002EAC:
- add r0, r2, #0x0
- bx lr
- .balign 4
-_02002EB0: .word 0x020ECB64
-_02002EB4: .word 0x020ECB65
-_02002EB8: .word 0x020ECB66
-_02002EBC: .word 0x020ECB67
-_02002EC0: .word 0x020ECB68
-_02002EC4: .word 0x020ECB69
-_02002EC8: .word 0x020ECB6A
-_02002ECC: .word 0x020ECB6B
-
- thumb_func_start FUN_02002ED0
-FUN_02002ED0: ; 0x02002ED0
- push {r4, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- add r3, r1, #0x0
- str r2, [sp, #0x4]
- mov r0, #0xe
- mov r1, #0x6
- add r2, r4, #0x0
- bl FUN_02006930
- add sp, #0x8
- pop {r4, pc}
-
- thumb_func_start FUN_02002EEC
-FUN_02002EEC: ; 0x02002EEC
- push {r4, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- mov r0, #0x20
- str r0, [sp, #0x0]
- add r3, r1, #0x0
- str r2, [sp, #0x4]
- mov r0, #0xe
- mov r1, #0x7
- add r2, r4, #0x0
- bl FUN_02006930
- add sp, #0x8
- pop {r4, pc}
-
- thumb_func_start FUN_02002F08
-FUN_02002F08: ; 0x02002F08
- push {r4-r6, lr}
- lsl r4, r0, #0x2
- ldr r0, _02002F3C ; =0x02106FC8
- add r5, r1, #0x0
- ldr r0, [r0, #0x0]
- add r6, r2, #0x0
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002F22
- bl ErrorHandling
-_02002F22:
- add r0, r5, #0x0
- bl FUN_02021F2C
- add r1, r0, #0x0
- ldr r0, _02002F3C ; =0x02106FC8
- add r2, r6, #0x0
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_02021934
- pop {r4-r6, pc}
- .balign 4
-_02002F3C: .word 0x02106FC8
-
- thumb_func_start FUN_02002F40
-FUN_02002F40: ; 0x02002F40
- push {r4, lr}
- add r4, r3, #0x0
- bl FUN_02002E14
- cmp r0, r4
- bhs _02002F52
- sub r0, r4, r0
- lsr r0, r0, #0x1
- pop {r4, pc}
-_02002F52:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02002F58
-FUN_02002F58: ; 0x02002F58
- push {r3-r7, lr}
- ldrh r2, [r0, #0x0]
- ldr r1, _02002F8C ; =0x0000FFFF
- mov r5, #0x1
- cmp r2, r1
- beq _02002F88
- mov r6, #0xe
- lsl r6, r6, #0xc
- add r7, r1, #0x0
- sub r4, r1, #0x1
-_02002F6C:
- cmp r2, r4
- bne _02002F76
- bl FUN_0201B8B8
- b _02002F82
-_02002F76:
- cmp r2, r6
- bne _02002F80
- add r5, r5, #0x1
- add r0, r0, #0x2
- b _02002F82
-_02002F80:
- add r0, r0, #0x2
-_02002F82:
- ldrh r2, [r0, #0x0]
- cmp r2, r7
- bne _02002F6C
-_02002F88:
- add r0, r5, #0x0
- pop {r3-r7, pc}
- .balign 4
-_02002F8C: .word 0x0000FFFF
-
- thumb_func_start FUN_02002F90
-FUN_02002F90: ; 0x02002F90
- push {r3, lr}
- bl FUN_02021F2C
- bl FUN_02002F58
- pop {r3, pc}
-
- thumb_func_start FUN_02002F9C
-FUN_02002F9C: ; 0x02002F9C
- push {r3-r5, lr}
- lsl r4, r0, #0x2
- ldr r0, _02002FCC ; =0x02106FC8
- add r5, r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02002FB4
- bl ErrorHandling
-_02002FB4:
- add r0, r5, #0x0
- bl FUN_02021F2C
- add r1, r0, #0x0
- ldr r0, _02002FCC ; =0x02106FC8
- ldr r0, [r0, #0x0]
- add r0, r0, r4
- add r0, #0x94
- ldr r0, [r0, #0x0]
- bl FUN_0202199C
- pop {r3-r5, pc}
- .balign 4
-_02002FCC: .word 0x02106FC8
-
- thumb_func_start FUN_02002FD0
-FUN_02002FD0: ; 0x02002FD0
- push {r4, lr}
- mov r1, #0x12
- lsl r1, r1, #0x4
- bl FUN_02016998
- mov r2, #0x12
- mov r1, #0x0
- lsl r2, r2, #0x4
- add r4, r0, #0x0
- blx MI_CpuFill8
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02002FEC
-FUN_02002FEC: ; 0x02002FEC
- ldr r3, _02002FF0 ; =FUN_02016A18
- bx r3
- .balign 4
-_02002FF0: .word FUN_02016A18
-
- thumb_func_start FUN_02002FF4
-FUN_02002FF4: ; 0x02002FF4
- push {r3-r4}
- mov r4, #0x14
- mul r4, r1
- str r2, [r0, r4]
- add r1, r0, r4
- ldr r0, [sp, #0x8]
- str r3, [r1, #0x4]
- str r0, [r1, #0x8]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_02003008
-FUN_02003008: ; 0x02003008
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r2, #0x0
- add r5, r0, #0x0
- add r6, r1, #0x0
- str r3, [sp, #0x4]
- add r0, r3, #0x0
- add r1, r4, #0x0
- bl FUN_02016998
- add r7, r0, #0x0
- ldr r0, [sp, #0x4]
- add r1, r4, #0x0
- bl FUN_02016998
- add r3, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- str r4, [sp, #0x0]
- bl FUN_02002FF4
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003038
-FUN_02003038: ; 0x02003038
- push {r3-r5, lr}
- add r4, r0, #0x0
- mov r0, #0x14
- add r5, r1, #0x0
- mul r5, r0
- ldr r0, [r4, r5]
- bl FUN_02016A18
- add r0, r4, r5
- ldr r0, [r0, #0x4]
- bl FUN_02016A18
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02003054
-FUN_02003054: ; 0x02003054
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r0, sp, #0x8
- ldrh r7, [r0, #0x10]
- add r6, r2, #0x0
- mov r0, #0x14
- mul r6, r0
- str r1, [sp, #0x0]
- add r0, r1, #0x0
- ldr r1, [r5, r6]
- lsl r4, r3, #0x1
- add r1, r1, r4
- add r2, r7, #0x0
- blx MIi_CpuCopy16
- add r1, r5, r6
- ldr r1, [r1, #0x4]
- ldr r0, [sp, #0x0]
- add r1, r1, r4
- add r2, r7, #0x0
- blx MIi_CpuCopy16
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02003084
-FUN_02003084: ; 0x02003084
- push {r4-r6, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- add r2, sp, #0x4
- ldr r4, [sp, #0x1c]
- bl FUN_02006C08
- add r6, r0, #0x0
- bne _0200309E
- bl ErrorHandling
-_0200309E:
- cmp r4, #0x0
- bne _020030A6
- ldr r0, [sp, #0x4]
- ldr r4, [r0, #0x8]
-_020030A6:
- add r0, sp, #0x8
- ldrh r0, [r0, #0x18]
- ldr r2, [sp, #0x18]
- mov r1, #0x14
- mul r1, r2
- add r1, r5, r1
- lsl r0, r0, #0x1
- ldr r1, [r1, #0x8]
- add r0, r4, r0
- cmp r0, r1
- bls _020030C0
- bl ErrorHandling
-_020030C0:
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- add r3, sp, #0x8
- ldr r2, [r1, #0xc]
- ldrh r1, [r3, #0x1c]
- ldrh r3, [r3, #0x18]
- add r0, r5, #0x0
- lsl r1, r1, #0x1
- add r1, r2, r1
- ldr r2, [sp, #0x18]
- bl FUN_02003054
- add r0, r6, #0x0
- bl FUN_02016A18
- add sp, #0x8
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020030E8
-FUN_020030E8: ; 0x020030E8
- push {r4, lr}
- sub sp, #0x10
- ldr r4, [sp, #0x18]
- str r4, [sp, #0x0]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x4]
- add r4, sp, #0x8
- ldrh r4, [r4, #0x18]
- str r4, [sp, #0x8]
- mov r4, #0x0
- str r4, [sp, #0xc]
- bl FUN_02003084
- add sp, #0x10
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02003108
-FUN_02003108: ; 0x02003108
- push {r3-r7, lr}
- add r4, r1, #0x0
- mov r1, #0x14
- add r6, r0, #0x0
- mul r1, r4
- add r5, r2, #0x0
- add r1, r6, r1
- add r7, r3, #0x0
- lsl r0, r5, #0x1
- ldr r1, [r1, #0x8]
- add r0, r7, r0
- cmp r0, r1
- bls _02003126
- bl ErrorHandling
-_02003126:
- cmp r4, #0x3
- bhi _0200315E
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02003136: ; jump table (using 16-bit offset)
- .short _0200313E - _02003136 - 2; case 0
- .short _02003146 - _02003136 - 2; case 1
- .short _0200314E - _02003136 - 2; case 2
- .short _02003156 - _02003136 - 2; case 3
-_0200313E:
- bl FUN_020222E8
- add r1, r0, #0x0
- b _02003164
-_02003146:
- bl FUN_020222F8
- add r1, r0, #0x0
- b _02003164
-_0200314E:
- bl FUN_02022308
- add r1, r0, #0x0
- b _02003164
-_02003156:
- bl FUN_02022310
- add r1, r0, #0x0
- b _02003164
-_0200315E:
- bl ErrorHandling
- pop {r3-r7, pc}
-_02003164:
- lsl r0, r7, #0x10
- lsr r0, r0, #0x10
- lsl r2, r5, #0x1
- str r0, [sp, #0x0]
- add r1, r1, r2
- add r0, r6, #0x0
- add r2, r4, #0x0
- add r3, r5, #0x0
- bl FUN_02003054
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200317C
-FUN_0200317C: ; 0x0200317C
- push {r3-r5, lr}
- add r4, r2, #0x0
- add r5, r3, #0x0
- add r2, sp, #0x0
- add r3, r4, #0x0
- bl FUN_02006C08
- add r4, r0, #0x0
- bne _02003192
- bl ErrorHandling
-_02003192:
- cmp r5, #0x0
- bne _0200319A
- ldr r0, [sp, #0x0]
- ldr r5, [r0, #0x8]
-_0200319A:
- ldr r0, [sp, #0x0]
- add r2, r5, #0x0
- ldr r1, [r0, #0xc]
- add r0, sp, #0x0
- ldrh r0, [r0, #0x10]
- lsl r0, r0, #0x1
- add r0, r1, r0
- ldr r1, [sp, #0x14]
- blx MIi_CpuCopy16
- add r0, r4, #0x0
- bl FUN_02016A18
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020031B8
-FUN_020031B8: ; 0x020031B8
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, sp, #0x10
- add r5, r0, #0x0
- add r0, r1, #0x0
- ldrh r1, [r4, #0x14]
- add r6, r3, #0x0
- str r1, [sp, #0x0]
- ldrh r1, [r4, #0x10]
- lsl r4, r2, #0x1
- ldr r2, [sp, #0x0]
- lsl r7, r1, #0x1
- mov r1, #0x14
- mul r6, r1
- mul r1, r0
- ldr r0, [r5, r1]
- str r1, [sp, #0x4]
- ldr r1, [r5, r6]
- add r0, r0, r4
- add r1, r1, r7
- blx MIi_CpuCopy16
- ldr r0, [sp, #0x4]
- add r1, r5, r6
- ldr r0, [r5, r0]
- ldr r1, [r1, #0x4]
- ldr r2, [sp, #0x0]
- add r0, r0, r4
- add r1, r1, r7
- blx MIi_CpuCopy16
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020031FC
-FUN_020031FC: ; 0x020031FC
- mov r2, #0x14
- mul r2, r1
- ldr r0, [r0, r2]
- bx lr
-
- thumb_func_start FUN_02003204
-FUN_02003204: ; 0x02003204
- mov r2, #0x14
- mul r2, r1
- add r0, r0, r2
- ldr r0, [r0, #0x4]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02003210
-FUN_02003210: ; 0x02003210
- push {r0-r3}
- push {r3-r7, lr}
- sub sp, #0x10
- str r3, [sp, #0x8]
- add r5, r0, #0x0
- ldr r0, [sp, #0x38]
- mov r6, #0x0
- str r0, [sp, #0x38]
- ldr r0, [sp, #0x3c]
- add r7, r1, #0x0
- str r0, [sp, #0x3c]
- ldr r0, [sp, #0x40]
- add r4, r6, #0x0
- str r0, [sp, #0x40]
- add r0, sp, #0x28
- ldrh r0, [r0, #0x8]
- str r0, [sp, #0xc]
-_02003232:
- add r0, r7, #0x0
- add r1, r4, #0x0
- bl FUN_02003314
- cmp r0, #0x1
- bne _020032A6
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r0, [r5, r0]
- add r1, r4, #0x0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x0
- bne _020032A6
- mov r0, #0x14
- add r6, r4, #0x0
- mul r6, r0
- add r0, r4, #0x0
- add r1, r5, r6
- add r2, sp, #0x30
- bl FUN_02003368
- ldr r0, [sp, #0x3c]
- add r1, sp, #0x28
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x40]
- str r0, [sp, #0x4]
- add r0, r5, r6
- ldrh r1, [r1, #0x8]
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0x38]
- add r0, #0xc
- bl FUN_020033A4
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02003328
- cmp r4, #0x4
- blo _02003294
- mov r2, #0x1
- add r0, r5, #0x0
- add r1, r4, #0x0
- lsl r2, r2, #0x8
- bl FUN_0200359C
- b _0200329E
-_02003294:
- add r0, r5, #0x0
- add r1, r4, #0x0
- mov r2, #0x10
- bl FUN_0200359C
-_0200329E:
- ldr r1, [sp, #0xc]
- add r0, sp, #0x28
- strh r1, [r0, #0x8]
- mov r6, #0x1
-_020032A6:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0xe
- blo _02003232
- cmp r6, #0x1
- bne _02003300
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r2, [r5, r0]
- ldr r1, _0200330C ; =0xFFFF0003
- and r1, r2
- lsl r2, r2, #0x10
- lsr r2, r2, #0x12
- orr r2, r7
- lsl r2, r2, #0x12
- lsr r2, r2, #0x10
- orr r1, r2
- strh r1, [r5, r0]
- add r1, r0, #0x2
- ldrh r1, [r5, r1]
- lsl r1, r1, #0x11
- lsr r1, r1, #0x1f
- bne _02003300
- add r1, r0, #0x2
- ldrh r2, [r5, r1]
- mov r1, #0x1
- lsl r1, r1, #0xe
- orr r2, r1
- add r1, r0, #0x2
- strh r2, [r5, r1]
- ldrh r2, [r5, r0]
- mov r1, #0x3
- bic r2, r1
- mov r1, #0x1
- orr r1, r2
- strh r1, [r5, r0]
- mov r2, #0x0
- add r0, r0, #0x4
- strb r2, [r5, r0]
- ldr r0, _02003310 ; =FUN_02003464
- add r1, r5, #0x0
- sub r2, r2, #0x2
- bl FUN_0200CA44
-_02003300:
- add r0, r6, #0x0
- add sp, #0x10
- pop {r3-r7}
- pop {r3}
- add sp, #0x10
- bx r3
- .balign 4
-_0200330C: .word 0xFFFF0003
-_02003310: .word FUN_02003464
-
- thumb_func_start FUN_02003314
-FUN_02003314: ; 0x02003314
- mov r3, #0x1
- add r2, r3, #0x0
- lsl r2, r1
- tst r0, r2
- bne _02003320
- mov r3, #0x0
-_02003320:
- lsl r0, r3, #0x18
- lsr r0, r0, #0x18
- bx lr
- .balign 4
-
- thumb_func_start FUN_02003328
-FUN_02003328: ; 0x02003328
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, _02003360 ; =0x0000011A
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- lsl r0, r0, #0x12
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x1
- beq _0200335E
- ldr r3, _02003360 ; =0x0000011A
- ldr r1, _02003364 ; =0xFFFFC000
- ldrh r2, [r5, r3]
- add r0, r2, #0x0
- lsl r2, r2, #0x12
- lsr r6, r2, #0x12
- mov r2, #0x1
- lsl r2, r4
- orr r2, r6
- lsl r2, r2, #0x10
- and r0, r1
- lsr r2, r2, #0x10
- lsr r1, r1, #0x12
- and r1, r2
- orr r0, r1
- strh r0, [r5, r3]
-_0200335E:
- pop {r4-r6, pc}
- .balign 4
-_02003360: .word 0x0000011A
-_02003364: .word 0xFFFFC000
-
- thumb_func_start FUN_02003368
-FUN_02003368: ; 0x02003368
- push {r4-r5}
- cmp r0, #0x4
- ldr r0, [r1, #0x8]
- bge _02003374
- lsl r0, r0, #0x13
- b _02003378
-_02003374:
- lsr r0, r0, #0x9
- lsl r0, r0, #0x18
-_02003378:
- mov r4, #0x0
- lsr r0, r0, #0x18
- add r5, r4, #0x0
- cmp r0, #0x0
- bls _02003398
- mov r3, #0x1
-_02003384:
- add r1, r3, #0x0
- lsl r1, r5
- add r1, r4, r1
- lsl r1, r1, #0x10
- lsr r4, r1, #0x10
- add r1, r5, #0x1
- lsl r1, r1, #0x18
- lsr r5, r1, #0x18
- cmp r5, r0
- blo _02003384
-_02003398:
- ldrh r0, [r2, #0x0]
- and r0, r4
- strh r0, [r2, #0x0]
- pop {r4-r5}
- bx lr
- .balign 4
-
- thumb_func_start FUN_020033A4
-FUN_020033A4: ; 0x020033A4
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r4, r3, #0x0
- cmp r2, #0x0
- bge _020033D4
- add r0, r2, #0x0
- blx FUN_020DE3F0
- add r0, r0, #0x2
- ldrh r1, [r5, #0x6]
- mov r2, #0xf
- lsl r0, r0, #0x10
- bic r1, r2
- lsr r2, r0, #0x10
- mov r0, #0xf
- and r0, r2
- orr r0, r1
- strh r0, [r5, #0x6]
- ldrh r1, [r5, #0x2]
- mov r0, #0x3f
- bic r1, r0
- strh r1, [r5, #0x2]
- b _020033F2
-_020033D4:
- ldrh r1, [r5, #0x6]
- mov r0, #0xf
- bic r1, r0
- mov r0, #0x2
- orr r0, r1
- strh r0, [r5, #0x6]
- ldrh r0, [r5, #0x2]
- mov r1, #0x3f
- bic r0, r1
- lsl r1, r2, #0x10
- lsr r2, r1, #0x10
- mov r1, #0x3f
- and r1, r2
- orr r0, r1
- strh r0, [r5, #0x2]
-_020033F2:
- strh r6, [r5, #0x0]
- ldrh r1, [r5, #0x2]
- ldr r0, _02003454 ; =0xFFFFF83F
- add r3, sp, #0x0
- and r1, r0
- lsl r0, r4, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r5, #0x2]
- ldrh r1, [r5, #0x2]
- ldr r0, _02003458 ; =0xFFFF07FF
- add r2, r1, #0x0
- ldrb r1, [r3, #0x10]
- and r2, r0
- lsl r0, r1, #0x1b
- lsr r0, r0, #0x10
- orr r0, r2
- strh r0, [r5, #0x2]
- ldrh r0, [r5, #0x4]
- ldr r2, _0200345C ; =0xFFFF8000
- ldrh r6, [r3, #0x14]
- lsr r3, r2, #0x11
- and r0, r2
- and r3, r6
- orr r0, r3
- strh r0, [r5, #0x4]
- ldrh r3, [r5, #0x6]
- ldr r0, _02003460 ; =0xFFFFFC0F
- and r0, r3
- ldrh r3, [r5, #0x2]
- lsl r3, r3, #0x1a
- lsr r3, r3, #0x1a
- lsl r3, r3, #0x1a
- lsr r3, r3, #0x16
- orr r0, r3
- strh r0, [r5, #0x6]
- cmp r4, r1
- ldrh r1, [r5, #0x4]
- bhs _02003448
- sub r0, r2, #0x1
- and r0, r1
- strh r0, [r5, #0x4]
- pop {r4-r6, pc}
-_02003448:
- mov r0, #0x2
- lsl r0, r0, #0xe
- orr r0, r1
- strh r0, [r5, #0x4]
- pop {r4-r6, pc}
- nop
-_02003454: .word 0xFFFFF83F
-_02003458: .word 0xFFFF07FF
-_0200345C: .word 0xFFFF8000
-_02003460: .word 0xFFFFFC0F
-
- thumb_func_start FUN_02003464
-FUN_02003464: ; 0x02003464
- push {r4-r6, lr}
- add r4, r1, #0x0
- mov r1, #0x47
- lsl r1, r1, #0x2
- ldrb r2, [r4, r1]
- add r5, r0, #0x0
- cmp r2, #0x1
- bne _020034A4
- mov r2, #0x0
- strb r2, [r4, r1]
- sub r2, r1, #0x2
- ldrh r3, [r4, r2]
- ldr r2, _020034F4 ; =0xFFFFC000
- add r5, r3, #0x0
- and r5, r2
- sub r3, r1, #0x2
- strh r5, [r4, r3]
- sub r3, r1, #0x4
- ldrh r5, [r4, r3]
- ldr r3, _020034F8 ; =0xFFFF0003
- sub r2, r2, #0x1
- and r5, r3
- sub r3, r1, #0x4
- strh r5, [r4, r3]
- sub r3, r1, #0x2
- ldrh r3, [r4, r3]
- sub r1, r1, #0x2
- and r2, r3
- strh r2, [r4, r1]
- bl FUN_0200CAB4
- pop {r4-r6, pc}
-_020034A4:
- sub r0, r1, #0x4
- ldrh r2, [r4, r0]
- lsl r0, r2, #0x1e
- lsr r0, r0, #0x1e
- cmp r0, #0x1
- bne _020034F0
- sub r0, r1, #0x2
- ldrh r0, [r4, r0]
- ldr r3, _020034F4 ; =0xFFFFC000
- lsl r2, r2, #0x10
- lsr r6, r2, #0x12
- lsr r2, r3, #0x12
- and r0, r3
- and r2, r6
- orr r2, r0
- sub r0, r1, #0x2
- strh r2, [r4, r0]
- add r0, r4, #0x0
- bl FUN_02003500
- add r0, r4, #0x0
- bl FUN_02003520
- mov r1, #0x46
- lsl r1, r1, #0x2
- ldrh r0, [r4, r1]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bne _020034F0
- add r0, r1, #0x2
- ldrh r2, [r4, r0]
- ldr r0, _020034FC ; =0xFFFFBFFF
- and r2, r0
- add r0, r1, #0x2
- strh r2, [r4, r0]
- add r0, r5, #0x0
- bl FUN_0200CAB4
-_020034F0:
- pop {r4-r6, pc}
- nop
-_020034F4: .word 0xFFFFC000
-_020034F8: .word 0xFFFF0003
-_020034FC: .word 0xFFFFBFFF
-
- thumb_func_start FUN_02003500
-FUN_02003500: ; 0x02003500
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r4, #0x0
- mov r6, #0x10
-_02003508:
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02003540
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x4
- blo _02003508
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02003520
-FUN_02003520: ; 0x02003520
- push {r4-r6, lr}
- mov r4, #0x4
- add r6, r4, #0x0
- add r5, r0, #0x0
- add r6, #0xfc
-_0200352A:
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02003540
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0xe
- blo _0200352A
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02003540
-FUN_02003540: ; 0x02003540
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r0, [r5, r0]
- add r4, r1, #0x0
- add r6, r2, #0x0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x0
- beq _02003594
- mov r0, #0x14
- mul r0, r4
- add r2, r5, r0
- ldrh r0, [r2, #0x12]
- ldrh r3, [r2, #0xe]
- lsl r1, r0, #0x16
- lsl r3, r3, #0x1a
- lsr r1, r1, #0x1a
- lsr r3, r3, #0x1a
- cmp r1, r3
- bhs _02003584
- ldr r3, _02003598 ; =0xFFFFFC0F
- and r3, r0
- add r0, r1, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x16
- orr r0, r3
- strh r0, [r2, #0x12]
- pop {r4-r6, pc}
-_02003584:
- ldr r1, _02003598 ; =0xFFFFFC0F
- and r0, r1
- strh r0, [r2, #0x12]
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_0200359C
-_02003594:
- pop {r4-r6, pc}
- nop
-_02003598: .word 0xFFFFFC0F
-
- thumb_func_start FUN_0200359C
-FUN_0200359C: ; 0x0200359C
- push {r4-r7, lr}
- sub sp, #0xc
- str r1, [sp, #0x4]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x4]
- mov r1, #0x14
- mul r1, r0
- ldr r0, [sp, #0x0]
- mov r6, #0x0
- add r5, r0, r1
- add r0, r5, #0x0
- str r0, [sp, #0x8]
- add r0, #0xc
- add r7, r2, #0x0
- add r4, r6, #0x0
- str r0, [sp, #0x8]
-_020035BC:
- ldrh r0, [r5, #0xc]
- lsl r1, r6, #0x10
- lsr r1, r1, #0x10
- bl FUN_02003314
- cmp r0, #0x0
- beq _020035DC
- ldr r0, [r5, #0x0]
- lsl r1, r4, #0x1
- ldr r2, [r5, #0x4]
- add r0, r0, r1
- add r1, r2, r1
- ldr r2, [sp, #0x8]
- add r3, r7, #0x0
- bl FUN_020035F8
-_020035DC:
- add r6, r6, #0x1
- add r4, r4, r7
- cmp r6, #0x10
- blo _020035BC
- ldr r1, [sp, #0x4]
- add r5, #0xc
- lsl r1, r1, #0x18
- ldr r0, [sp, #0x0]
- lsr r1, r1, #0x18
- add r2, r5, #0x0
- bl FUN_02003684
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_020035F8
-FUN_020035F8: ; 0x020035F8
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x4]
- mov r0, #0x0
- add r6, r1, #0x0
- mov r12, r0
- str r2, [sp, #0x0]
- mov lr, r3
- add r0, r3, #0x0
- beq _02003680
-_0200360C:
- ldr r0, [sp, #0x4]
- mov r1, #0x1f
- ldrh r0, [r0, #0x0]
- asr r2, r0, #0x5
- add r5, r2, #0x0
- and r5, r1
- ldr r1, [sp, #0x0]
- asr r4, r0, #0xa
- ldrh r1, [r1, #0x4]
- lsl r1, r1, #0x11
- lsr r3, r1, #0x11
- ldr r1, [sp, #0x0]
- ldrh r1, [r1, #0x2]
- lsl r1, r1, #0x15
- lsr r2, r1, #0x1b
- mov r1, #0x1f
- and r1, r4
- mov r4, #0x1f
- and r0, r4
- and r4, r3
- sub r4, r4, r0
- mul r4, r2
- asr r4, r4, #0x4
- add r0, r0, r4
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- asr r4, r3, #0xa
- mov r0, #0x1f
- and r0, r4
- sub r0, r0, r1
- mul r0, r2
- asr r0, r0, #0x4
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- asr r3, r3, #0x5
- mov r1, #0x1f
- and r1, r3
- sub r1, r1, r5
- mul r1, r2
- asr r1, r1, #0x4
- add r1, r5, r1
- lsl r1, r1, #0x18
- lsl r0, r0, #0xa
- lsr r1, r1, #0x13
- orr r0, r1
- orr r0, r7
- strh r0, [r6, #0x0]
- ldr r0, [sp, #0x4]
- add r6, r6, #0x2
- add r0, r0, #0x2
- str r0, [sp, #0x4]
- mov r0, r12
- add r1, r0, #0x1
- mov r0, lr
- mov r12, r1
- cmp r1, r0
- blo _0200360C
-_02003680:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003684
-FUN_02003684: ; 0x02003684
- push {r4-r5}
- ldrh r4, [r2, #0x2]
- lsl r3, r4, #0x10
- lsl r4, r4, #0x15
- lsr r3, r3, #0x1b
- lsr r4, r4, #0x1b
- cmp r4, r3
- bne _020036BE
- mov r3, #0x46
- lsl r3, r3, #0x2
- ldrh r4, [r0, r3]
- mov r2, #0x1
- lsl r2, r1
- lsl r1, r4, #0x10
- lsr r5, r1, #0x12
- add r1, r5, #0x0
- tst r1, r2
- beq _0200371E
- eor r2, r5
- lsl r2, r2, #0x10
- ldr r1, _02003724 ; =0xFFFF0003
- lsr r2, r2, #0x10
- lsl r2, r2, #0x12
- and r1, r4
- lsr r2, r2, #0x10
- orr r1, r2
- strh r1, [r0, r3]
- pop {r4-r5}
- bx lr
-_020036BE:
- ldrh r0, [r2, #0x4]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x1f
- bne _020036F4
- lsl r0, r4, #0x10
- asr r1, r0, #0x10
- ldrh r0, [r2, #0x6]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x10
- asr r4, r0, #0x10
- cmp r4, r3
- ble _020036DE
- lsl r0, r3, #0x10
- asr r4, r0, #0x10
-_020036DE:
- ldrh r1, [r2, #0x2]
- ldr r0, _02003728 ; =0xFFFFF83F
- and r1, r0
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r2, #0x2]
- pop {r4-r5}
- bx lr
-_020036F4:
- lsl r0, r4, #0x10
- asr r1, r0, #0x10
- ldrh r0, [r2, #0x6]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- sub r0, r1, r0
- lsl r0, r0, #0x10
- asr r4, r0, #0x10
- cmp r4, r3
- bge _0200370C
- lsl r0, r3, #0x10
- asr r4, r0, #0x10
-_0200370C:
- ldrh r1, [r2, #0x2]
- ldr r0, _02003728 ; =0xFFFFF83F
- and r1, r0
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r2, #0x2]
-_0200371E:
- pop {r4-r5}
- bx lr
- nop
-_02003724: .word 0xFFFF0003
-_02003728: .word 0xFFFFF83F
-
- thumb_func_start FUN_0200372C
-FUN_0200372C: ; 0x0200372C
- push {r3-r7, lr}
- add r6, r0, #0x0
- ldr r0, _020038DC ; =0x0000011A
- ldrh r1, [r6, r0]
- lsl r1, r1, #0x10
- lsr r1, r1, #0x1f
- bne _02003748
- sub r0, r0, #0x2
- ldrh r0, [r6, r0]
- lsl r0, r0, #0x1e
- lsr r0, r0, #0x1e
- cmp r0, #0x1
- beq _02003748
- b _020038DA
-_02003748:
- mov r7, #0x2
- mov r5, #0x0
- add r4, r6, #0x0
- lsl r7, r7, #0xc
-_02003750:
- ldr r0, _020038DC ; =0x0000011A
- ldrh r1, [r6, r0]
- lsl r0, r1, #0x10
- lsr r0, r0, #0x1f
- bne _02003770
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _0200377C
- lsl r0, r1, #0x12
- lsl r1, r5, #0x10
- lsr r0, r0, #0x12
- lsr r1, r1, #0x10
- bl FUN_02003314
- cmp r0, #0x0
- beq _0200377C
-_02003770:
- ldr r0, [r4, #0x4]
- ldr r1, [r4, #0x8]
- blx DC_FlushRange
- cmp r5, #0xd
- bls _0200377E
-_0200377C:
- b _020038A4
-_0200377E:
- add r0, r5, r5
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200378A: ; jump table (using 16-bit offset)
- .short _020037A6 - _0200378A - 2; case 0
- .short _020037B2 - _0200378A - 2; case 1
- .short _020037BE - _0200378A - 2; case 2
- .short _020037CA - _0200378A - 2; case 3
- .short _020037D6 - _0200378A - 2; case 4
- .short _020037EA - _0200378A - 2; case 5
- .short _020037FE - _0200378A - 2; case 6
- .short _02003814 - _0200378A - 2; case 7
- .short _0200382A - _0200378A - 2; case 8
- .short _0200383E - _0200378A - 2; case 9
- .short _02003852 - _0200378A - 2; case 10
- .short _02003868 - _0200378A - 2; case 11
- .short _0200387E - _0200378A - 2; case 12
- .short _02003892 - _0200378A - 2; case 13
-_020037A6:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C9550
- b _020038A4
-_020037B2:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C94E8
- b _020038A4
-_020037BE:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C9480
- b _020038A4
-_020037CA:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C9418
- b _020038A4
-_020037D6:
- blx FUN_020C8B10
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C8A90
- blx FUN_020C8A2C
- b _020038A4
-_020037EA:
- blx FUN_020C8B10
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r1, r7, #0x0
- blx FUN_020C8A90
- blx FUN_020C8A2C
- b _020038A4
-_020037FE:
- blx FUN_020C8B10
- mov r1, #0x1
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xe
- blx FUN_020C8A90
- blx FUN_020C8A2C
- b _020038A4
-_02003814:
- blx FUN_020C8B10
- mov r1, #0x6
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xc
- blx FUN_020C8A90
- blx FUN_020C8A2C
- b _020038A4
-_0200382A:
- blx FUN_020C88CC
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C8858
- blx FUN_020C880C
- b _020038A4
-_0200383E:
- blx FUN_020C88CC
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r1, r7, #0x0
- blx FUN_020C8858
- blx FUN_020C880C
- b _020038A4
-_02003852:
- blx FUN_020C88CC
- mov r1, #0x1
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xe
- blx FUN_020C8858
- blx FUN_020C880C
- b _020038A4
-_02003868:
- blx FUN_020C88CC
- mov r1, #0x6
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xc
- blx FUN_020C8858
- blx FUN_020C880C
- b _020038A4
-_0200387E:
- blx FUN_020C89BC
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C8948
- blx FUN_020C88F0
- b _020038A4
-_02003892:
- blx FUN_020C87E8
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- blx FUN_020C8774
- blx FUN_020C8728
-_020038A4:
- add r5, r5, #0x1
- add r4, #0x14
- cmp r5, #0xe
- bge _020038AE
- b _02003750
-_020038AE:
- ldr r3, _020038DC ; =0x0000011A
- ldr r1, _020038E0 ; =0xFFFFC000
- sub r2, r3, #0x2
- ldrh r2, [r6, r2]
- ldrh r0, [r6, r3]
- lsl r2, r2, #0x10
- and r0, r1
- lsr r2, r2, #0x12
- lsr r1, r1, #0x12
- and r1, r2
- orr r0, r1
- strh r0, [r6, r3]
- ldrh r0, [r6, r3]
- lsl r0, r0, #0x12
- lsr r0, r0, #0x12
- bne _020038DA
- sub r0, r3, #0x2
- ldrh r1, [r6, r0]
- mov r0, #0x3
- bic r1, r0
- sub r0, r3, #0x2
- strh r1, [r6, r0]
-_020038DA:
- pop {r3-r7, pc}
- .balign 4
-_020038DC: .word 0x0000011A
-_020038E0: .word 0xFFFFC000
-
- thumb_func_start FUN_020038E4
-FUN_020038E4: ; 0x020038E4
- mov r1, #0x46
- lsl r1, r1, #0x2
- ldrh r0, [r0, r1]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bx lr
-
- thumb_func_start FUN_020038F0
-FUN_020038F0: ; 0x020038F0
- push {r3-r4}
- ldr r3, _0200390C ; =0x0000011A
- lsl r1, r1, #0x10
- ldrh r4, [r0, r3]
- ldr r2, _02003910 ; =0xFFFF7FFF
- lsr r1, r1, #0x10
- lsl r1, r1, #0x1f
- and r2, r4
- lsr r1, r1, #0x10
- orr r1, r2
- strh r1, [r0, r3]
- pop {r3-r4}
- bx lr
- nop
-_0200390C: .word 0x0000011A
-_02003910: .word 0xFFFF7FFF
-
- thumb_func_start FUN_02003914
-FUN_02003914: ; 0x02003914
- push {r3-r7, lr}
- sub sp, #0x8
- add r6, r0, #0x0
- str r3, [sp, #0x0]
- mov r0, #0x14
- add r4, r1, #0x0
- mul r4, r0
- add r0, sp, #0x10
- ldrh r0, [r0, #0x14]
- add r7, r2, #0x0
- ldr r5, [sp, #0x20]
- str r0, [sp, #0x4]
- lsl r1, r0, #0x1
- add r0, r6, r4
- ldr r0, [r0, #0x8]
- cmp r1, r0
- bls _0200393A
- bl ErrorHandling
-_0200393A:
- sub r0, r7, #0x1
- cmp r0, #0x1
- bhi _02003952
- ldr r2, [r6, r4]
- lsl r1, r5, #0x1
- add r1, r2, r1
- ldr r2, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r2, r2, r5
- lsl r2, r2, #0x1
- blx MIi_CpuClear16
-_02003952:
- cmp r7, #0x0
- beq _0200395A
- cmp r7, #0x2
- bne _0200396E
-_0200395A:
- add r1, r6, r4
- ldr r2, [r1, #0x4]
- lsl r1, r5, #0x1
- add r1, r2, r1
- ldr r2, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r2, r2, r5
- lsl r2, r2, #0x1
- blx MIi_CpuClear16
-_0200396E:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02003974
-FUN_02003974: ; 0x02003974
- push {r4-r7, lr}
- sub sp, #0xc
- str r0, [sp, #0x0]
- add r0, sp, #0x10
- ldrh r0, [r0, #0x10]
- str r1, [sp, #0x4]
- add r7, r2, #0x0
- lsl r1, r0, #0x1b
- lsr r1, r1, #0x1b
- mov r12, r1
- lsl r1, r0, #0x16
- lsl r0, r0, #0x11
- lsr r1, r1, #0x1b
- lsr r0, r0, #0x1b
- mov r2, #0x0
- mov lr, r1
- str r0, [sp, #0x8]
- cmp r7, #0x0
- bls _020039E2
-_0200399A:
- ldr r0, [sp, #0x0]
- lsl r6, r2, #0x1
- ldrh r4, [r0, r6]
- lsl r0, r4, #0x1b
- lsr r1, r0, #0x1b
- lsl r0, r4, #0x16
- lsl r4, r4, #0x11
- lsr r5, r4, #0x1b
- ldr r4, [sp, #0x8]
- lsr r0, r0, #0x1b
- sub r4, r4, r5
- mul r4, r3
- asr r4, r4, #0x4
- add r4, r5, r4
- lsl r5, r4, #0xa
- mov r4, r12
- sub r4, r4, r1
- mul r4, r3
- asr r4, r4, #0x4
- add r1, r1, r4
- mov r4, lr
- sub r4, r4, r0
- mul r4, r3
- asr r4, r4, #0x4
- add r0, r0, r4
- lsl r0, r0, #0x5
- orr r0, r1
- add r1, r5, #0x0
- orr r1, r0
- ldr r0, [sp, #0x4]
- strh r1, [r0, r6]
- add r0, r2, #0x1
- lsl r0, r0, #0x10
- lsr r2, r0, #0x10
- cmp r2, r7
- blo _0200399A
-_020039E2:
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020039E8
-FUN_020039E8: ; 0x020039E8
- push {r3-r7, lr}
- sub sp, #0x8
- add r7, r2, #0x0
- add r5, r0, #0x0
- mov r2, #0x14
- add r6, r1, #0x0
- mul r6, r2
- str r3, [sp, #0x4]
- ldr r1, [r5, r6]
- mov r0, #0x0
- add r4, r5, r6
- cmp r1, #0x0
- beq _02003A0A
- ldr r1, [r4, #0x4]
- cmp r1, #0x0
- beq _02003A0A
- mov r0, #0x1
-_02003A0A:
- cmp r0, #0x0
- bne _02003A12
- bl ErrorHandling
-_02003A12:
- add r3, sp, #0x10
- ldrh r0, [r3, #0x14]
- add r2, r5, r6
- lsl r1, r7, #0x1
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x0]
- ldr r2, [r2, #0x4]
- add r0, r0, r1
- add r1, r2, r1
- ldrb r3, [r3, #0x10]
- ldr r2, [sp, #0x4]
- bl FUN_02003974
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003A30
-FUN_02003A30: ; 0x02003A30
- push {r3-r7, lr}
- sub sp, #0x8
- str r3, [sp, #0x4]
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r4, r2, #0x0
- ldr r7, [sp, #0x20]
- beq _02003A60
-_02003A40:
- mov r0, #0x1
- tst r0, r4
- beq _02003A54
- str r7, [sp, #0x0]
- ldr r3, [sp, #0x4]
- add r0, r5, #0x0
- add r1, r6, #0x0
- mov r2, #0x10
- bl FUN_02003974
-_02003A54:
- lsl r0, r4, #0xf
- lsr r4, r0, #0x10
- add r6, #0x20
- add r5, #0x20
- cmp r4, #0x0
- bne _02003A40
-_02003A60:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003A64
-FUN_02003A64: ; 0x02003A64
- push {r4-r7, lr}
- sub sp, #0xc
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- ldr r0, [sp, #0x20]
- add r5, r2, #0x0
- mov r1, #0x14
- add r2, r7, #0x0
- str r0, [sp, #0x20]
- mul r2, r1
- mov r4, #0x0
- ldr r1, [r6, r2]
- add r0, r4, #0x0
- cmp r1, #0x0
- beq _02003A8E
- add r1, r6, r2
- ldr r1, [r1, #0x4]
- cmp r1, #0x0
- beq _02003A8E
- mov r0, #0x1
-_02003A8E:
- cmp r0, #0x0
- bne _02003A96
- bl ErrorHandling
-_02003A96:
- cmp r5, #0x0
- beq _02003AC0
-_02003A9A:
- mov r0, #0x1
- tst r0, r5
- beq _02003AB6
- ldr r0, [sp, #0x8]
- lsl r2, r4, #0x10
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- add r1, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- lsr r2, r2, #0x10
- mov r3, #0x10
- bl FUN_020039E8
-_02003AB6:
- lsl r0, r5, #0xf
- lsr r5, r0, #0x10
- add r4, #0x10
- cmp r5, #0x0
- bne _02003A9A
-_02003AC0:
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02003AC4
-FUN_02003AC4: ; 0x02003AC4
- push {r3-r7, lr}
- mov lr, r1
- mov r12, r2
- add r7, r3, #0x0
- mov r4, #0x0
- cmp r1, #0x0
- ble _02003B3C
- ldr r6, [sp, #0x18]
-_02003AD4:
- ldrh r3, [r0, #0x0]
- mov r1, #0x1f
- add r2, r3, #0x0
- asr r5, r3, #0xa
- and r2, r1
- and r5, r1
- mov r1, #0x1d
- mul r1, r5
- mov r5, #0x4c
- mul r5, r2
- asr r3, r3, #0x5
- mov r2, #0x1f
- and r3, r2
- mov r2, #0x97
- mul r2, r3
- add r2, r5, r2
- add r1, r1, r2
- asr r3, r1, #0x8
- mov r1, r12
- add r2, r1, #0x0
- mul r2, r3
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- asr r2, r1, #0x8
- add r1, r7, #0x0
- mul r1, r3
- mul r3, r6
- lsl r1, r1, #0x10
- lsl r3, r3, #0x10
- lsr r1, r1, #0x10
- lsr r3, r3, #0x10
- asr r1, r1, #0x8
- asr r3, r3, #0x8
- cmp r2, #0x1f
- ble _02003B1C
- mov r2, #0x1f
-_02003B1C:
- cmp r1, #0x1f
- ble _02003B22
- mov r1, #0x1f
-_02003B22:
- cmp r3, #0x1f
- ble _02003B28
- mov r3, #0x1f
-_02003B28:
- lsl r3, r3, #0xa
- lsl r1, r1, #0x5
- orr r1, r3
- orr r1, r2
- strh r1, [r0, #0x0]
- add r4, r4, #0x1
- mov r1, lr
- add r0, r0, #0x2
- cmp r4, r1
- blt _02003AD4
-_02003B3C:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02003B40
-FUN_02003B40: ; 0x02003B40
- push {r3-r5, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- add r2, sp, #0x4
- bl FUN_02006C08
- add r4, r0, #0x0
- bne _02003B58
- bl ErrorHandling
-_02003B58:
- ldr r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _02003B64
- ldr r0, [sp, #0x4]
- ldr r0, [r0, #0x8]
- str r0, [sp, #0x1c]
-_02003B64:
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x24]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x4]
- ldr r3, [sp, #0x28]
- ldr r0, [r0, #0xc]
- mov r1, #0x10
- bl FUN_02003AC4
- ldr r0, [sp, #0x1c]
- add r3, sp, #0x8
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- ldrh r3, [r3, #0x18]
- ldr r1, [r1, #0xc]
- ldr r2, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_02003054
- add r0, r4, #0x0
- bl FUN_02016A18
- add sp, #0x8
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02003B98
-FUN_02003B98: ; 0x02003B98
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- bl FUN_02003D30
- add r4, r0, #0x0
- blx FUN_020C01D0
- bl FUN_020040C8
- add r0, r4, #0x0
- bl FUN_02004064
- add r0, r4, #0x0
- ldr r1, _02003C00 ; =0x000BBC00
- add r0, #0x94
- blx FUN_020C2A94
- add r1, r4, #0x0
- add r1, #0x90
- str r0, [r1, #0x0]
- add r2, r4, #0x0
- add r2, #0x90
- ldr r1, _02003C04 ; =0x02104780
- ldr r2, [r2, #0x0]
- add r0, r4, #0x0
- mov r3, #0x0
- blx FUN_020C26F8
- add r0, r4, #0x0
- add r0, #0x90
- ldr r0, [r0, #0x0]
- blx FUN_020C39CC
- add r0, r4, #0x0
- bl FUN_02004088
- add r0, r4, #0x0
- bl FUN_020040A4
- ldr r0, _02003C08 ; =0x02107070
- mov r1, #0x0
- str r1, [r0, #0x4]
- ldr r0, _02003C0C ; =0x000BCD4C
- str r5, [r4, r0]
- ldrh r0, [r6, #0x0]
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x1e
- bl FUN_02004D60
- pop {r4-r6, pc}
- nop
-_02003C00: .word 0x000BBC00
-_02003C04: .word 0x02104780
-_02003C08: .word 0x02107070
-_02003C0C: .word 0x000BCD4C
-
- thumb_func_start FUN_02003C10
-FUN_02003C10: ; 0x02003C10
- push {r4, lr}
- bl FUN_02003D30
- add r4, r0, #0x0
- bl FUN_02003D04
- cmp r0, #0x0
- bne _02003C30
- ldr r0, _02003C3C ; =0x000BCD00
- ldr r1, [r4, r0]
- cmp r1, #0x0
- ble _02003C2C
- sub r1, r1, #0x1
- str r1, [r4, r0]
-_02003C2C:
- bl FUN_02003C40
-_02003C30:
- bl FUN_02005CFC
- blx FUN_020C01A0
- pop {r4, pc}
- nop
-_02003C3C: .word 0x000BCD00
-
- thumb_func_start FUN_02003C40
-FUN_02003C40: ; 0x02003C40
- push {r4, lr}
- bl FUN_02003D30
- add r4, r0, #0x0
- ldr r0, _02003CDC ; =0x02107070
- ldr r0, [r0, #0x0]
- cmp r0, #0x6
- bhi _02003CD8
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02003C5C: ; jump table (using 16-bit offset)
- .short _02003CD8 - _02003C5C - 2; case 0
- .short _02003C6A - _02003C5C - 2; case 1
- .short _02003CD8 - _02003C5C - 2; case 2
- .short _02003C72 - _02003C5C - 2; case 3
- .short _02003C82 - _02003C5C - 2; case 4
- .short _02003C92 - _02003C5C - 2; case 5
- .short _02003CB0 - _02003C5C - 2; case 6
-_02003C6A:
- mov r0, #0x2
- bl FUN_02003CE8
- pop {r4, pc}
-_02003C72:
- bl FUN_02005404
- cmp r0, #0x0
- bne _02003CD8
- mov r0, #0x2
- bl FUN_02003CE8
- pop {r4, pc}
-_02003C82:
- bl FUN_02005404
- cmp r0, #0x0
- bne _02003CD8
- mov r0, #0x2
- bl FUN_02003CE8
- pop {r4, pc}
-_02003C92:
- bl FUN_02005404
- cmp r0, #0x0
- bne _02003CD8
- bl FUN_02004D94
- cmp r0, #0x0
- bne _02003CD8
- bl FUN_020040DC
- ldr r0, _02003CE0 ; =0x000BCD0E
- ldrh r0, [r4, r0]
- bl FUN_0200521C
- pop {r4, pc}
-_02003CB0:
- bl FUN_02005404
- cmp r0, #0x0
- bne _02003CD8
- bl FUN_02004D94
- cmp r0, #0x0
- bne _02003CD8
- bl FUN_020040DC
- ldr r0, _02003CE0 ; =0x000BCD0E
- ldrh r0, [r4, r0]
- bl FUN_0200521C
- ldr r1, _02003CE4 ; =0x000BCD08
- mov r0, #0x7f
- ldr r1, [r4, r1]
- mov r2, #0x0
- bl FUN_0200538C
-_02003CD8:
- pop {r4, pc}
- nop
-_02003CDC: .word 0x02107070
-_02003CE0: .word 0x000BCD0E
-_02003CE4: .word 0x000BCD08
-
- thumb_func_start FUN_02003CE8
-FUN_02003CE8: ; 0x02003CE8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- ldr r1, _02003CFC ; =0x000BCCFC
- mov r2, #0x0
- strh r2, [r0, r1]
- ldr r0, _02003D00 ; =0x02107070
- str r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-_02003CFC: .word 0x000BCCFC
-_02003D00: .word 0x02107070
-
- thumb_func_start FUN_02003D04
-FUN_02003D04: ; 0x02003D04
- push {r4, lr}
- bl FUN_02003D30
- add r4, r0, #0x0
- mov r0, #0x2
- bl FUN_020048BC
- cmp r0, #0x0
- beq _02003D1A
- mov r0, #0x1
- pop {r4, pc}
-_02003D1A:
- ldr r0, _02003D2C ; =0x000BCD12
- ldrh r0, [r4, r0]
- cmp r0, #0x0
- beq _02003D26
- mov r0, #0x1
- pop {r4, pc}
-_02003D26:
- mov r0, #0x0
- pop {r4, pc}
- nop
-_02003D2C: .word 0x000BCD12
-
- thumb_func_start FUN_02003D30
-FUN_02003D30: ; 0x02003D30
- ldr r0, _02003D34 ; =0x02107078
- bx lr
- .balign 4
-_02003D34: .word 0x02107078
-
- thumb_func_start FUN_02003D38
-FUN_02003D38: ; 0x02003D38
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- cmp r4, #0x27
- bls _02003D46
- b _02003E92
-_02003D46:
- add r1, r4, r4
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02003D52: ; jump table (using 16-bit offset)
- .short _02003DA8 - _02003D52 - 2; case 0
- .short _02003DAE - _02003D52 - 2; case 1
- .short _02003DB4 - _02003D52 - 2; case 2
- .short _02003DBA - _02003D52 - 2; case 3
- .short _02003DC0 - _02003D52 - 2; case 4
- .short _02003DA2 - _02003D52 - 2; case 5
- .short _02003DC6 - _02003D52 - 2; case 6
- .short _02003DCC - _02003D52 - 2; case 7
- .short _02003DD2 - _02003D52 - 2; case 8
- .short _02003DD8 - _02003D52 - 2; case 9
- .short _02003DDE - _02003D52 - 2; case 10
- .short _02003DE4 - _02003D52 - 2; case 11
- .short _02003DEA - _02003D52 - 2; case 12
- .short _02003DF0 - _02003D52 - 2; case 13
- .short _02003DF6 - _02003D52 - 2; case 14
- .short _02003DFC - _02003D52 - 2; case 15
- .short _02003E02 - _02003D52 - 2; case 16
- .short _02003E08 - _02003D52 - 2; case 17
- .short _02003E0E - _02003D52 - 2; case 18
- .short _02003E14 - _02003D52 - 2; case 19
- .short _02003E1A - _02003D52 - 2; case 20
- .short _02003E20 - _02003D52 - 2; case 21
- .short _02003E26 - _02003D52 - 2; case 22
- .short _02003E2C - _02003D52 - 2; case 23
- .short _02003E32 - _02003D52 - 2; case 24
- .short _02003E38 - _02003D52 - 2; case 25
- .short _02003E3E - _02003D52 - 2; case 26
- .short _02003E44 - _02003D52 - 2; case 27
- .short _02003E4A - _02003D52 - 2; case 28
- .short _02003E50 - _02003D52 - 2; case 29
- .short _02003E56 - _02003D52 - 2; case 30
- .short _02003E5C - _02003D52 - 2; case 31
- .short _02003E62 - _02003D52 - 2; case 32
- .short _02003E68 - _02003D52 - 2; case 33
- .short _02003E6E - _02003D52 - 2; case 34
- .short _02003E74 - _02003D52 - 2; case 35
- .short _02003E7A - _02003D52 - 2; case 36
- .short _02003E80 - _02003D52 - 2; case 37
- .short _02003E86 - _02003D52 - 2; case 38
- .short _02003E8C - _02003D52 - 2; case 39
-_02003DA2:
- ldr r1, _02003E9C ; =0x000BCCFE
- add r0, r0, r1
- pop {r4, pc}
-_02003DA8:
- ldr r1, _02003EA0 ; =0x000BBCB8
- add r0, r0, r1
- pop {r4, pc}
-_02003DAE:
- ldr r1, _02003EA4 ; =0x000BBCBC
- add r0, r0, r1
- pop {r4, pc}
-_02003DB4:
- ldr r1, _02003EA8 ; =0x000BBCC0
- add r0, r0, r1
- pop {r4, pc}
-_02003DBA:
- ldr r1, _02003EAC ; =0x000BBCE0
- add r0, r0, r1
- pop {r4, pc}
-_02003DC0:
- ldr r1, _02003EB0 ; =0x000BCCE0
- add r0, r0, r1
- pop {r4, pc}
-_02003DC6:
- ldr r1, _02003EB4 ; =0x000BCD00
- add r0, r0, r1
- pop {r4, pc}
-_02003DCC:
- ldr r1, _02003EB8 ; =0x000BCD04
- add r0, r0, r1
- pop {r4, pc}
-_02003DD2:
- ldr r1, _02003EBC ; =0x000BCD08
- add r0, r0, r1
- pop {r4, pc}
-_02003DD8:
- ldr r1, _02003EC0 ; =0x000BCD0C
- add r0, r0, r1
- pop {r4, pc}
-_02003DDE:
- ldr r1, _02003EC4 ; =0x000BCD0E
- add r0, r0, r1
- pop {r4, pc}
-_02003DE4:
- ldr r1, _02003EC8 ; =0x000BCD10
- add r0, r0, r1
- pop {r4, pc}
-_02003DEA:
- ldr r1, _02003ECC ; =0x000BCD11
- add r0, r0, r1
- pop {r4, pc}
-_02003DF0:
- ldr r1, _02003ED0 ; =0x000BCD12
- add r0, r0, r1
- pop {r4, pc}
-_02003DF6:
- ldr r1, _02003ED4 ; =0x000BCD14
- add r0, r0, r1
- pop {r4, pc}
-_02003DFC:
- ldr r1, _02003ED8 ; =0x000BCD15
- add r0, r0, r1
- pop {r4, pc}
-_02003E02:
- ldr r1, _02003EDC ; =0x000BCD16
- add r0, r0, r1
- pop {r4, pc}
-_02003E08:
- ldr r1, _02003EE0 ; =0x000BCD17
- add r0, r0, r1
- pop {r4, pc}
-_02003E0E:
- ldr r1, _02003EE4 ; =0x000BCD18
- add r0, r0, r1
- pop {r4, pc}
-_02003E14:
- ldr r1, _02003EE8 ; =0x000BCD19
- add r0, r0, r1
- pop {r4, pc}
-_02003E1A:
- ldr r1, _02003EEC ; =0x000BCD1A
- add r0, r0, r1
- pop {r4, pc}
-_02003E20:
- ldr r1, _02003EF0 ; =0x000BCD1B
- add r0, r0, r1
- pop {r4, pc}
-_02003E26:
- ldr r1, _02003EF4 ; =0x000BCD1C
- add r0, r0, r1
- pop {r4, pc}
-_02003E2C:
- ldr r1, _02003EF8 ; =0x000BCD20
- add r0, r0, r1
- pop {r4, pc}
-_02003E32:
- ldr r1, _02003EFC ; =0x000BCD24
- add r0, r0, r1
- pop {r4, pc}
-_02003E38:
- ldr r1, _02003F00 ; =0x000BCD28
- add r0, r0, r1
- pop {r4, pc}
-_02003E3E:
- ldr r1, _02003F04 ; =0x000BCD2C
- add r0, r0, r1
- pop {r4, pc}
-_02003E44:
- ldr r1, _02003F08 ; =0x000BCD30
- add r0, r0, r1
- pop {r4, pc}
-_02003E4A:
- ldr r1, _02003F0C ; =0x000BCD34
- add r0, r0, r1
- pop {r4, pc}
-_02003E50:
- ldr r1, _02003F10 ; =0x000BCD38
- add r0, r0, r1
- pop {r4, pc}
-_02003E56:
- ldr r1, _02003F14 ; =0x000BCD39
- add r0, r0, r1
- pop {r4, pc}
-_02003E5C:
- ldr r1, _02003F18 ; =0x000BCD3A
- add r0, r0, r1
- pop {r4, pc}
-_02003E62:
- ldr r1, _02003F1C ; =0x000BCD3C
- add r0, r0, r1
- pop {r4, pc}
-_02003E68:
- ldr r1, _02003F20 ; =0x000BCD40
- add r0, r0, r1
- pop {r4, pc}
-_02003E6E:
- ldr r1, _02003F24 ; =0x000BCD48
- add r0, r0, r1
- pop {r4, pc}
-_02003E74:
- ldr r1, _02003F28 ; =0x000BCD4C
- add r0, r0, r1
- pop {r4, pc}
-_02003E7A:
- ldr r1, _02003F2C ; =0x000BCD50
- add r0, r0, r1
- pop {r4, pc}
-_02003E80:
- ldr r1, _02003F30 ; =0x000BCD54
- add r0, r0, r1
- pop {r4, pc}
-_02003E86:
- ldr r1, _02003F34 ; =0x000BCD58
- add r0, r0, r1
- pop {r4, pc}
-_02003E8C:
- ldr r1, _02003F38 ; =0x000BCD5C
- add r0, r0, r1
- pop {r4, pc}
-_02003E92:
- bl ErrorHandling
- mov r0, #0x0
- pop {r4, pc}
- nop
-_02003E9C: .word 0x000BCCFE
-_02003EA0: .word 0x000BBCB8
-_02003EA4: .word 0x000BBCBC
-_02003EA8: .word 0x000BBCC0
-_02003EAC: .word 0x000BBCE0
-_02003EB0: .word 0x000BCCE0
-_02003EB4: .word 0x000BCD00
-_02003EB8: .word 0x000BCD04
-_02003EBC: .word 0x000BCD08
-_02003EC0: .word 0x000BCD0C
-_02003EC4: .word 0x000BCD0E
-_02003EC8: .word 0x000BCD10
-_02003ECC: .word 0x000BCD11
-_02003ED0: .word 0x000BCD12
-_02003ED4: .word 0x000BCD14
-_02003ED8: .word 0x000BCD15
-_02003EDC: .word 0x000BCD16
-_02003EE0: .word 0x000BCD17
-_02003EE4: .word 0x000BCD18
-_02003EE8: .word 0x000BCD19
-_02003EEC: .word 0x000BCD1A
-_02003EF0: .word 0x000BCD1B
-_02003EF4: .word 0x000BCD1C
-_02003EF8: .word 0x000BCD20
-_02003EFC: .word 0x000BCD24
-_02003F00: .word 0x000BCD28
-_02003F04: .word 0x000BCD2C
-_02003F08: .word 0x000BCD30
-_02003F0C: .word 0x000BCD34
-_02003F10: .word 0x000BCD38
-_02003F14: .word 0x000BCD39
-_02003F18: .word 0x000BCD3A
-_02003F1C: .word 0x000BCD3C
-_02003F20: .word 0x000BCD40
-_02003F24: .word 0x000BCD48
-_02003F28: .word 0x000BCD4C
-_02003F2C: .word 0x000BCD50
-_02003F30: .word 0x000BCD54
-_02003F34: .word 0x000BCD58
-_02003F38: .word 0x000BCD5C
-
- thumb_func_start FUN_02003F3C
-FUN_02003F3C: ; 0x02003F3C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- add r0, #0x90
- ldr r0, [r0, #0x0]
- blx FUN_020C290C
- add r4, r0, #0x0
- mov r0, #0x0
- mvn r0, r0
- cmp r4, r0
- bne _02003F5A
- bl ErrorHandling
-_02003F5A:
- cmp r5, #0x0
- beq _02003F60
- str r4, [r5, #0x0]
-_02003F60:
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02003F64
-FUN_02003F64: ; 0x02003F64
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- add r0, #0x90
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- blx FUN_020C2828
- pop {r4, pc}
-
- thumb_func_start FUN_02003F78
-FUN_02003F78: ; 0x02003F78
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- add r1, r0, #0x0
- add r1, #0x90
- ldr r1, [r1, #0x0]
- add r0, r4, #0x0
- blx FUN_020C36A8
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02003F90
-FUN_02003F90: ; 0x02003F90
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- add r1, r0, #0x0
- add r1, #0x90
- ldr r1, [r1, #0x0]
- add r0, r4, #0x0
- blx FUN_020C3674
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02003FA8
-FUN_02003FA8: ; 0x02003FA8
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02003D30
- add r2, r0, #0x0
- add r2, #0x90
- ldr r2, [r2, #0x0]
- add r0, r5, #0x0
- add r1, r4, #0x0
- blx FUN_020C35E0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02003FC4
-FUN_02003FC4: ; 0x02003FC4
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- add r1, r0, #0x0
- add r1, #0x90
- ldr r1, [r1, #0x0]
- add r0, r4, #0x0
- blx FUN_020C360C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02003FDC
-FUN_02003FDC: ; 0x02003FDC
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- add r1, r0, #0x0
- add r1, #0x90
- ldr r1, [r1, #0x0]
- add r0, r4, #0x0
- blx FUN_020C3640
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02003FF4
-FUN_02003FF4: ; 0x02003FF4
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- add r4, r0, #0x0
- cmp r5, #0x9
- blt _02004008
- bl ErrorHandling
- mov r5, #0x0
-_02004008:
- ldr r0, _02004014 ; =0x000BBC94
- add r1, r4, r0
- lsl r0, r5, #0x2
- add r0, r1, r0
- pop {r3-r5, pc}
- nop
-_02004014: .word 0x000BBC94
-
- thumb_func_start FUN_02004018
-FUN_02004018: ; 0x02004018
- push {r3, lr}
- cmp r0, #0x7
- bhi _0200405A
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200402A: ; jump table (using 16-bit offset)
- .short _0200403E - _0200402A - 2; case 0
- .short _0200403A - _0200402A - 2; case 1
- .short _02004042 - _0200402A - 2; case 2
- .short _02004046 - _0200402A - 2; case 3
- .short _0200404A - _0200402A - 2; case 4
- .short _0200404E - _0200402A - 2; case 5
- .short _02004052 - _0200402A - 2; case 6
- .short _02004056 - _0200402A - 2; case 7
-_0200403A:
- mov r0, #0x0
- pop {r3, pc}
-_0200403E:
- mov r0, #0x1
- pop {r3, pc}
-_02004042:
- mov r0, #0x2
- pop {r3, pc}
-_02004046:
- mov r0, #0x3
- pop {r3, pc}
-_0200404A:
- mov r0, #0x4
- pop {r3, pc}
-_0200404E:
- mov r0, #0x5
- pop {r3, pc}
-_02004052:
- mov r0, #0x6
- pop {r3, pc}
-_02004056:
- mov r0, #0x7
- pop {r3, pc}
-_0200405A:
- bl ErrorHandling
- mov r0, #0x3
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004064
-FUN_02004064: ; 0x02004064
- push {r4, lr}
- ldr r2, _02004080 ; =0x000BCD60
- mov r1, #0x0
- add r4, r0, #0x0
- blx FUN_020DF4A4
- ldr r0, _02004084 ; =0x000BCD1C
- mov r1, #0x0
-_02004074:
- add r1, r1, #0x1
- str r1, [r4, r0]
- add r4, r4, #0x4
- cmp r1, #0x7
- blt _02004074
- pop {r4, pc}
- .balign 4
-_02004080: .word 0x000BCD60
-_02004084: .word 0x000BCD1C
-
- thumb_func_start FUN_02004088
-FUN_02004088: ; 0x02004088
- push {r3-r5, lr}
- ldr r1, _020040A0 ; =0x000BBC94
- mov r4, #0x0
- add r5, r0, r1
-_02004090:
- add r0, r5, #0x0
- blx FUN_020C0F80
- add r4, r4, #0x1
- add r5, r5, #0x4
- cmp r4, #0x9
- blt _02004090
- pop {r3-r5, pc}
- .balign 4
-_020040A0: .word 0x000BBC94
-
- thumb_func_start FUN_020040A4
-FUN_020040A4: ; 0x020040A4
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _020040C0 ; =0x000BCD1C
- add r0, r4, r0
- bl FUN_02003F3C
- mov r0, #0x0
- bl FUN_02003F78
- ldr r0, _020040C4 ; =0x000BCD20
- add r0, r4, r0
- bl FUN_02003F3C
- pop {r4, pc}
- .balign 4
-_020040C0: .word 0x000BCD1C
-_020040C4: .word 0x000BCD20
-
- thumb_func_start FUN_020040C8
-FUN_020040C8: ; 0x020040C8
- push {r3, lr}
- blx MIC_Init
- mov r0, #0x1
- blx FUN_020D5168
- mov r0, #0x2
- blx FUN_020D5150
- pop {r3, pc}
-
- thumb_func_start FUN_020040DC
-FUN_020040DC: ; 0x020040DC
- push {r3, lr}
- mov r0, #0x7
- mov r1, #0x0
- blx FUN_020C1040
- mov r0, #0x7
- bl FUN_02003FF4
- blx FUN_020C0F68
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020040F4
-FUN_020040F4: ; 0x020040F4
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x5
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004104
-FUN_02004104: ; 0x02004104
- push {r3, lr}
- mov r0, #0x5
- bl FUN_02003D38
- ldrb r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02004110
-FUN_02004110: ; 0x02004110
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x9
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- mov r0, #0x0
- bl FUN_02004130
- pop {r4, pc}
-
- thumb_func_start FUN_02004124
-FUN_02004124: ; 0x02004124
- push {r3, lr}
- mov r0, #0x9
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02004130
-FUN_02004130: ; 0x02004130
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0xa
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004140
-FUN_02004140: ; 0x02004140
- push {r3, lr}
- mov r0, #0xa
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_0200414C
-FUN_0200414C: ; 0x0200414C
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200415C
-FUN_0200415C: ; 0x0200415C
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x14
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x15
- bl FUN_02003D38
- cmp r5, #0x33
- bhs _0200417A
- strb r5, [r4, #0x0]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- pop {r3-r5, pc}
-_0200417A:
- strb r5, [r0, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004180
-FUN_02004180: ; 0x02004180
- push {r3, lr}
- cmp r0, #0x39
- bgt _020041DE
- blt _0200418A
- b _020042C8
-_0200418A:
- cmp r0, #0x35
- bgt _020041CC
- blt _02004192
- b _0200429A
-_02004192:
- cmp r0, #0x33
- bgt _020041C6
- bge _0200427C
- cmp r0, #0xe
- bhi _020041CA
- add r2, r0, r0
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_020041A8: ; jump table (using 16-bit offset)
- .short _0200432C - _020041A8 - 2; case 0
- .short _02004222 - _020041A8 - 2; case 1
- .short _0200422C - _020041A8 - 2; case 2
- .short _02004236 - _020041A8 - 2; case 3
- .short _02004240 - _020041A8 - 2; case 4
- .short _0200424A - _020041A8 - 2; case 5
- .short _0200425E - _020041A8 - 2; case 6
- .short _0200429A - _020041A8 - 2; case 7
- .short _02004268 - _020041A8 - 2; case 8
- .short _02004222 - _020041A8 - 2; case 9
- .short _02004222 - _020041A8 - 2; case 10
- .short _02004254 - _020041A8 - 2; case 11
- .short _02004272 - _020041A8 - 2; case 12
- .short _0200422C - _020041A8 - 2; case 13
- .short _02004222 - _020041A8 - 2; case 14
-_020041C6:
- cmp r0, #0x34
- beq _02004290
-_020041CA:
- b _0200432C
-_020041CC:
- cmp r0, #0x37
- bgt _020041D8
- bge _020042AE
- cmp r0, #0x36
- beq _020042A4
- b _0200432C
-_020041D8:
- cmp r0, #0x38
- beq _020042BE
- b _0200432C
-_020041DE:
- cmp r0, #0x3d
- bgt _020041F8
- blt _020041E6
- b _020042F0
-_020041E6:
- cmp r0, #0x3b
- bgt _020041F2
- bge _020042DC
- cmp r0, #0x3a
- beq _020042D2
- b _0200432C
-_020041F2:
- cmp r0, #0x3c
- beq _020042E6
- b _0200432C
-_020041F8:
- cmp r0, #0x3f
- bgt _02004206
- blt _02004200
- b _02004304
-_02004200:
- cmp r0, #0x3e
- beq _020042FA
- b _0200432C
-_02004206:
- sub r0, #0x40
- cmp r0, #0x3
- bls _0200420E
- b _0200432C
-_0200420E:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200421A: ; jump table (using 16-bit offset)
- .short _0200430E - _0200421A - 2; case 0
- .short _0200431E - _0200421A - 2; case 1
- .short _02004286 - _0200421A - 2; case 2
- .short _020042AE - _0200421A - 2; case 3
-_02004222:
- mov r0, #0x1
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200422C:
- mov r0, #0x2
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004236:
- mov r0, #0xd
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004240:
- mov r0, #0x1
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200424A:
- mov r0, #0x2
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004254:
- mov r0, #0x1
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200425E:
- mov r0, #0xb
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004268:
- mov r0, #0x1
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004272:
- mov r0, #0xe
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200427C:
- mov r0, #0x3
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004286:
- mov r0, #0x6
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004290:
- mov r0, #0x5
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200429A:
- mov r0, #0x9
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042A4:
- mov r0, #0xa
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042AE:
- ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FDC
- ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FC4
- add r1, r0, #0x0
- b _0200432C
-_020042BE:
- mov r0, #0xc
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042C8:
- mov r0, #0x7
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042D2:
- mov r0, #0x8
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042DC:
- mov r0, #0xf
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042E6:
- mov r0, #0x3
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042F0:
- mov r0, #0x5
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_020042FA:
- mov r0, #0xf
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_02004304:
- mov r0, #0x4
- bl FUN_02003F78
- add r1, r0, #0x0
- b _0200432C
-_0200430E:
- ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FDC
- ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FC4
- add r1, r0, #0x0
- b _0200432C
-_0200431E:
- ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FDC
- ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FC4
- add r1, r0, #0x0
-_0200432C:
- add r0, r1, #0x0
- pop {r3, pc}
- .balign 4
-_02004330: .word 0x000005E5
-_02004334: .word 0x000005ED
-_02004338: .word 0x000005EC
-
- thumb_func_start FUN_0200433C
-FUN_0200433C: ; 0x0200433C
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- mov r0, #0x14
- add r5, r1, #0x0
- add r6, r2, #0x0
- bl FUN_02003D38
- str r0, [sp, #0x0]
- mov r0, #0x15
- bl FUN_02003D38
- str r0, [sp, #0x4]
- mov r0, #0xd
- bl FUN_02003D38
- add r7, r0, #0x0
- cmp r4, #0x33
- bhs _02004370
- ldr r0, [sp, #0x0]
- ldrb r0, [r0, #0x0]
- cmp r0, r4
- bne _0200437E
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004370:
- ldr r0, [sp, #0x4]
- ldrb r0, [r0, #0x0]
- cmp r0, r4
- bne _0200437E
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200437E:
- add r0, r4, #0x0
- bl FUN_0200415C
- cmp r4, #0x39
- bgt _020043DC
- bge _02004458
- cmp r4, #0x35
- bgt _020043CA
- bge _02004458
- cmp r4, #0x33
- bgt _020043C4
- bge _02004458
- cmp r4, #0xe
- bhi _020043C8
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020043A6: ; jump table (using 16-bit offset)
- .short _020044A0 - _020043A6 - 2; case 0
- .short _02004460 - _020043A6 - 2; case 1
- .short _02004484 - _020043A6 - 2; case 2
- .short _02004496 - _020043A6 - 2; case 3
- .short _0200441C - _020043A6 - 2; case 4
- .short _02004430 - _020043A6 - 2; case 5
- .short _02004444 - _020043A6 - 2; case 6
- .short _0200444E - _020043A6 - 2; case 7
- .short _02004496 - _020043A6 - 2; case 8
- .short _02004496 - _020043A6 - 2; case 9
- .short _02004496 - _020043A6 - 2; case 10
- .short _0200443A - _020043A6 - 2; case 11
- .short _02004496 - _020043A6 - 2; case 12
- .short _02004496 - _020043A6 - 2; case 13
- .short _02004472 - _020043A6 - 2; case 14
-_020043C4:
- cmp r4, #0x34
- beq _02004458
-_020043C8:
- b _020044A0
-_020043CA:
- cmp r4, #0x37
- bgt _020043D6
- bge _02004458
- cmp r4, #0x36
- beq _02004458
- b _020044A0
-_020043D6:
- cmp r4, #0x38
- beq _02004458
- b _020044A0
-_020043DC:
- cmp r4, #0x3d
- bgt _020043F4
- bge _02004458
- cmp r4, #0x3b
- bgt _020043EE
- bge _02004458
- cmp r4, #0x3a
- beq _02004458
- b _020044A0
-_020043EE:
- cmp r4, #0x3c
- beq _02004458
- b _020044A0
-_020043F4:
- cmp r4, #0x3f
- bgt _02004400
- bge _02004458
- cmp r4, #0x3e
- beq _02004458
- b _020044A0
-_02004400:
- add r0, r4, #0x0
- sub r0, #0x40
- cmp r0, #0x3
- bhi _020044A0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02004414: ; jump table (using 16-bit offset)
- .short _02004458 - _02004414 - 2; case 0
- .short _02004458 - _02004414 - 2; case 1
- .short _02004458 - _02004414 - 2; case 2
- .short _02004458 - _02004414 - 2; case 3
-_0200441C:
- mov r0, #0x0
- bl FUN_0200516C
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020044D4
- mov r0, #0x0
- strh r0, [r7, #0x0]
- b _020044A0
-_02004430:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02004648
- b _020044A0
-_0200443A:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02004680
- b _020044A0
-_02004444:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020046A0
- b _020044A0
-_0200444E:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020046C4
- b _020044A0
-_02004458:
- add r0, r4, #0x0
- bl FUN_020046E8
- b _020044A0
-_02004460:
- mov r0, #0x1
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004472:
- mov r0, #0x2
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004484:
- mov r0, #0x0
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004496:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
-_020044A0:
- mov r0, #0x1
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020044A8
-FUN_020044A8: ; 0x020044A8
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- ldr r0, [r0, #0x0]
- bl FUN_02003F64
- mov r0, #0x18
- bl FUN_02003D38
- bl FUN_02003F3C
- add r0, r4, #0x0
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl FUN_02003F3C
- pop {r4, pc}
-
- thumb_func_start FUN_020044D4
-FUN_020044D4: ; 0x020044D4
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0xb
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- mov r0, #0x1f
- bl FUN_02003D38
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- add r4, r0, #0x0
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _0200450E
- cmp r4, r5
- bne _0200450E
- bl FUN_02004140
- mov r1, #0x12
- lsl r1, r1, #0x6
- cmp r0, r1
- bne _02004566
-_0200450E:
- mov r0, #0x1
- bl FUN_02004DBC
- bl FUN_02005454
- cmp r4, r5
- beq _02004528
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
- bl FUN_0200541C
-_02004528:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02004560
- mov r0, #0x2
- bl FUN_02004748
- bl FUN_02003F64
- mov r0, #0x4
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl FUN_02003F3C
- cmp r4, r5
- beq _02004554
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
-_02004554:
- lsl r1, r4, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- bl FUN_02004568
- pop {r4-r6, pc}
-_02004560:
- add r0, r5, #0x0
- bl FUN_0200521C
-_02004566:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004568
-FUN_02004568: ; 0x02004568
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- ldr r1, _020045C0 ; =0x000003E9
- cmp r0, r1
- beq _02004594
- add r1, r1, #0x2
- cmp r0, r1
- beq _02004594
- add r0, r5, #0x0
- mov r1, #0x4
- bl FUN_02003FA8
- bl ErrorHandling
- b _0200459C
-_02004594:
- ldrh r0, [r4, #0x0]
- mov r1, #0x6
- bl FUN_02003FA8
-_0200459C:
- mov r0, #0x1a
- bl FUN_02003D38
- bl FUN_02003F3C
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
- mov r0, #0x7f
- mov r1, #0x28
- mov r2, #0x0
- bl FUN_0200538C
- mov r0, #0x0
- bl FUN_02004DBC
- pop {r3-r5, pc}
- .balign 4
-_020045C0: .word 0x000003E9
-
- thumb_func_start FUN_020045C4
-FUN_020045C4: ; 0x020045C4
- push {r3-r7, lr}
- add r7, r0, #0x0
- mov r0, #0x12
- add r5, r1, #0x0
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- beq _020045E4
- cmp r5, #0x0
- bne _02004642
-_020045E4:
- mov r0, #0x1
- bl FUN_02004748
- bl FUN_02003F64
- ldrh r0, [r4, #0x0]
- mov r1, #0x2
- bl FUN_02003FA8
- mov r0, #0x18
- bl FUN_02003D38
- bl FUN_02003F3C
- mov r0, #0x4
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl FUN_02003F3C
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- ldr r1, _02004644 ; =0x000003E9
- cmp r0, r1
- beq _02004630
- add r1, r1, #0x2
- cmp r0, r1
- beq _02004630
- add r0, r7, #0x0
- mov r1, #0x4
- bl FUN_02003FA8
- bl ErrorHandling
- b _02004638
-_02004630:
- ldrh r0, [r4, #0x0]
- mov r1, #0x4
- bl FUN_02003FA8
-_02004638:
- mov r0, #0x1a
- bl FUN_02003D38
- bl FUN_02003F3C
-_02004642:
- pop {r3-r7, pc}
- .balign 4
-_02004644: .word 0x000003E9
-
- thumb_func_start FUN_02004648
-FUN_02004648: ; 0x02004648
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_020051AC
- mov r0, #0x2
- bl FUN_02004748
- bl FUN_02003F64
- mov r0, #0x5
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl FUN_02003F3C
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004680
-FUN_02004680: ; 0x02004680
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- bl FUN_02004810
- mov r0, #0x4
- bl FUN_020044A8
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
-
- thumb_func_start FUN_020046A0
-FUN_020046A0: ; 0x020046A0
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- mov r0, #0x6
- bl FUN_020044A8
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020046C4
-FUN_020046C4: ; 0x020046C4
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- mov r0, #0x7
- bl FUN_020044A8
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020046E8
-FUN_020046E8: ; 0x020046E8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02004738
- add r0, r4, #0x0
- bl FUN_02004180
- mov r0, #0x1b
- bl FUN_02003D38
- bl FUN_02003F3C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004704
-FUN_02004704: ; 0x02004704
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x17
- add r4, r1, #0x0
- bl FUN_02003D38
- bl FUN_0200541C
- add r0, r5, #0x0
- bl FUN_020044A8
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004724
-FUN_02004724: ; 0x02004724
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- bl FUN_020051AC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
-
- thumb_func_start FUN_02004738
-FUN_02004738: ; 0x02004738
- push {r3, lr}
- mov r0, #0x4
- bl FUN_02004748
- bl FUN_02003F64
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004748
-FUN_02004748: ; 0x02004748
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl FUN_02003D30
- cmp r4, #0x7
- blt _02004762
- bl ErrorHandling
- mov r0, #0x1a
- bl FUN_02003D38
- ldr r0, [r0, #0x0]
- pop {r3-r5, pc}
-_02004762:
- cmp r4, #0x6
- bhi _020047C4
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02004772: ; jump table (using 16-bit offset)
- .short _02004780 - _02004772 - 2; case 0
- .short _0200478A - _02004772 - 2; case 1
- .short _02004794 - _02004772 - 2; case 2
- .short _0200479E - _02004772 - 2; case 3
- .short _020047A8 - _02004772 - 2; case 4
- .short _020047B2 - _02004772 - 2; case 5
- .short _020047BC - _02004772 - 2; case 6
-_02004780:
- mov r0, #0x16
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_0200478A:
- mov r0, #0x17
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_02004794:
- mov r0, #0x18
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_0200479E:
- mov r0, #0x19
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047A8:
- mov r0, #0x1a
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047B2:
- mov r0, #0x1b
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047BC:
- mov r0, #0x1c
- bl FUN_02003D38
- add r5, r0, #0x0
-_020047C4:
- ldr r0, [r5, #0x0]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020047C8
-FUN_020047C8: ; 0x020047C8
- push {r4-r6, lr}
- add r5, r1, #0x0
- cmp r0, #0x1
- bne _020047DC
- mov r0, #0xb
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r4, #0x0
- b _020047EA
-_020047DC:
- cmp r0, #0x7
- bne _0200480E
- mov r0, #0xc
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r4, #0x7
-_020047EA:
- cmp r5, #0x0
- bne _02004800
- add r0, r4, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_02004110
-_02004800:
- add r0, r4, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C0F8C
- strb r5, [r6, #0x0]
-_0200480E:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004810
-FUN_02004810: ; 0x02004810
- push {r4, lr}
- mov r0, #0xb
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xc
- bl FUN_02003D38
- mov r1, #0x0
- strb r1, [r4, #0x0]
- strb r1, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_02004828
-FUN_02004828: ; 0x02004828
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- blx FUN_020C0EF4
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200483C
-FUN_0200483C: ; 0x0200483C
- push {r4, lr}
- add r4, r1, #0x0
- bpl _02004844
- mov r4, #0x0
-_02004844:
- cmp r4, #0x7f
- ble _0200484A
- mov r4, #0x7f
-_0200484A:
- bl FUN_02003FF4
- add r1, r4, #0x0
- blx FUN_020C0F30
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004858
-FUN_02004858: ; 0x02004858
- push {r3-r5, lr}
- add r5, r1, #0x0
- blx FUN_020C23FC
- cmp r5, #0x1
- beq _02004868
- cmp r5, #0x8
- bne _0200486C
-_02004868:
- mov r4, #0x7f
- b _02004872
-_0200486C:
- cmp r0, #0x0
- beq _0200488A
- ldrb r4, [r0, #0x2]
-_02004872:
- bl FUN_020313EC
- cmp r0, #0x1
- bne _0200488A
- add r0, r4, #0x0
- mov r1, #0x5
- blx _s32_div_f
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0200483C
-_0200488A:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200488C
-FUN_0200488C: ; 0x0200488C
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r1, r4, #0x0
- bl FUN_0200483C
- pop {r4, pc}
-
- thumb_func_start FUN_020048A0
-FUN_020048A0: ; 0x020048A0
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- mov r2, #0x0
- mvn r2, r2
- add r1, r5, #0x0
- add r3, r2, #0x0
- str r4, [sp, #0x0]
- blx FUN_020C3910
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020048BC
-FUN_020048BC: ; 0x020048BC
- push {r4, lr}
- add r4, r0, #0x0
- bpl _020048C6
- bl ErrorHandling
-_020048C6:
- add r0, r4, #0x0
- blx FUN_020C0F50
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020048D0
-FUN_020048D0: ; 0x020048D0
- push {r3, lr}
- cmp r0, #0x0
- bne _020048DA
- mov r0, #0xff
- pop {r3, pc}
-_020048DA:
- blx FUN_020C23FC
- cmp r0, #0x0
- bne _020048E6
- mov r0, #0xff
- pop {r3, pc}
-_020048E6:
- ldrb r0, [r0, #0x5]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020048EC
-FUN_020048EC: ; 0x020048EC
- ldr r3, _020048F0 ; =FUN_020C0E14
- bx r3
- .balign 4
-_020048F0: .word FUN_020C0E14
-
- thumb_func_start FUN_020048F4
-FUN_020048F4: ; 0x020048F4
- push {r3, lr}
- bl FUN_02004900
- blx FUN_020C22D0
- pop {r3, pc}
-
- thumb_func_start FUN_02004900
-FUN_02004900: ; 0x02004900
- push {r3, lr}
- blx FUN_020C23FC
- cmp r0, #0x0
- bne _0200490E
- mov r0, #0x0
- pop {r3, pc}
-_0200490E:
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004914
-FUN_02004914: ; 0x02004914
- ldr r3, _02004918 ; =MIC_StartAutoSampling
- bx r3
- .balign 4
-_02004918: .word MIC_StartAutoSampling
-
- thumb_func_start FUN_0200491C
-FUN_0200491C: ; 0x0200491C
- push {r3, lr}
- bl FUN_02003D30
- blx MIC_StopAutoSampling
- pop {r3, pc}
-
- thumb_func_start FUN_02004928
-FUN_02004928: ; 0x02004928
- push {r3, lr}
- blx MIC_DoSamplingAsync
- pop {r3, pc}
-
- thumb_func_start FUN_02004930
-FUN_02004930: ; 0x02004930
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004954
- cmp r5, #0xf
- beq _02004954
- bl ErrorHandling
-_02004954:
- cmp r5, #0xe
- bne _02004962
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _02004962
- bl ErrorHandling
-_02004962:
- cmp r5, #0xf
- bne _02004970
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02004970
- bl ErrorHandling
-_02004970:
- cmp r5, #0xe
- bne _0200497C
- mov r0, #0x0
- bl FUN_02003D38
- pop {r4-r6, pc}
-_0200497C:
- mov r0, #0x1
- bl FUN_02003D38
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004984
-FUN_02004984: ; 0x02004984
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _020049A8
- cmp r5, #0xf
- beq _020049A8
- bl ErrorHandling
-_020049A8:
- cmp r5, #0xe
- bne _020049D6
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _020049D0
- mov r0, #0x0
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, r5, #0x0
- blx FUN_020C0688
- str r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020049CA
- mov r0, #0x0
- pop {r4-r6, pc}
-_020049CA:
- mov r0, #0x1
- strb r0, [r6, #0x0]
- b _020049FE
-_020049D0:
- bl ErrorHandling
- b _020049FE
-_020049D6:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020049FA
- mov r0, #0x1
- bl FUN_02003D38
- add r6, r0, #0x0
- add r0, r5, #0x0
- blx FUN_020C0688
- str r0, [r6, #0x0]
- cmp r0, #0x0
- bne _020049F4
- mov r0, #0x0
- pop {r4-r6, pc}
-_020049F4:
- mov r0, #0x1
- strb r0, [r4, #0x0]
- b _020049FE
-_020049FA:
- bl ErrorHandling
-_020049FE:
- mov r0, #0x1
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02004A04
-FUN_02004A04: ; 0x02004A04
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004A2A
- cmp r5, #0xf
- beq _02004A2A
- bl ErrorHandling
- pop {r4-r6, pc}
-_02004A2A:
- cmp r5, #0xe
- bne _02004A4C
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02004A46
- add r0, r5, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- blx FUN_020C0670
- mov r0, #0x0
- strb r0, [r6, #0x0]
- pop {r4-r6, pc}
-_02004A46:
- bl ErrorHandling
- pop {r4-r6, pc}
-_02004A4C:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02004A64
- add r0, r5, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- blx FUN_020C0670
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r4-r6, pc}
-_02004A64:
- bl ErrorHandling
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02004A6C
-FUN_02004A6C: ; 0x02004A6C
- push {r3-r5, lr}
- sub sp, #0x18
- add r3, r0, #0x0
- ldr r0, [r3, #0x10]
- add r4, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r3, #0x14]
- str r0, [sp, #0x4]
- ldr r0, [r3, #0x18]
- str r0, [sp, #0x8]
- ldr r0, [r3, #0x1c]
- str r0, [sp, #0xc]
- ldr r0, [r3, #0x20]
- str r0, [sp, #0x10]
- ldr r0, [r3, #0x24]
- str r0, [sp, #0x14]
- ldr r0, [r3, #0x0]
- ldr r1, [r3, #0x4]
- ldr r2, [r3, #0x8]
- ldr r0, [r0, #0x0]
- ldr r3, [r3, #0xc]
- blx FUN_020C054C
- add r5, r0, #0x0
- bne _02004AA4
- add r0, r4, #0x0
- bl FUN_02004A04
-_02004AA4:
- add r0, r5, #0x0
- add sp, #0x18
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004AAC
-FUN_02004AAC: ; 0x02004AAC
- push {r3, lr}
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- blx FUN_020C0510
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004ABC
-FUN_02004ABC: ; 0x02004ABC
- push {r3, lr}
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- blx FUN_020C03B8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004ACC
-FUN_02004ACC: ; 0x02004ACC
- push {r4, lr}
- add r4, r1, #0x0
- cmp r4, #0x7f
- bls _02004AD6
- mov r4, #0x7f
-_02004AD6:
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- blx FUN_020C041C
- pop {r4, pc}
-
- thumb_func_start FUN_02004AE4
-FUN_02004AE4: ; 0x02004AE4
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- blx FUN_020C044C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004AF8
-FUN_02004AF8: ; 0x02004AF8
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r5, r1, #0x0
- bl FUN_020313EC
- cmp r0, #0x1
- bne _02004B20
- add r0, r4, #0x0
- bl FUN_02004930
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x5
- blx _s32_div_f
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- blx FUN_020C04DC
- pop {r3-r5, pc}
-_02004B20:
- add r0, r4, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r5, #0x0
- blx FUN_020C04DC
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004B30
-FUN_02004B30: ; 0x02004B30
- push {r3-r7, lr}
- sub sp, #0x30
- add r6, r0, #0x0
- str r1, [sp, #0x0]
- str r2, [sp, #0x4]
- add r5, r3, #0x0
- bl FUN_02003D30
- mov r0, #0x21
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004B54
- cmp r5, #0xf
- beq _02004B54
- bl ErrorHandling
-_02004B54:
- add r0, r6, #0x0
- blx FUN_020C226C
- add r7, r0, #0x0
- bne _02004B68
- bl ErrorHandling
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B68:
- ldr r0, [r7, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- blx FUN_020C217C
- add r6, r0, #0x0
- bne _02004B80
- bl ErrorHandling
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B80:
- cmp r5, #0xe
- bne _02004BCE
- ldr r0, [sp, #0x48]
- add r1, r6, #0x0
- bl FUN_02016998
- str r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02004B9C
- bl ErrorHandling
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B9C:
- mov r1, #0x0
- add r2, r6, #0x0
- blx FUN_020DF4A4
- ldr r0, [r7, #0x0]
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- add r2, r6, #0x0
- mov r3, #0x0
- blx FUN_020C2104
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- bne _02004BC6
- bl ErrorHandling
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004BC6:
- ldr r0, [r4, #0x0]
- add r1, r6, #0x0
- bl FUN_02004C1C
-_02004BCE:
- add r0, r5, #0x0
- bl FUN_02004930
- mov r1, #0x0
- str r1, [sp, #0xc]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x0]
- str r0, [sp, #0x10]
- ldr r0, _02004C18 ; =0x00003443
- str r1, [sp, #0x14]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x0]
- str r1, [sp, #0x18]
- str r0, [sp, #0x24]
- mov r0, #0x6
- lsl r0, r0, #0xc
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x4]
- add r1, r5, #0x0
- str r0, [sp, #0x2c]
- add r0, sp, #0x8
- str r6, [sp, #0x1c]
- bl FUN_02004A6C
- add r4, r0, #0x0
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- bl FUN_02004AF8
- mov r0, #0xe
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-_02004C18: .word 0x00003443
-
- thumb_func_start FUN_02004C1C
-FUN_02004C1C: ; 0x02004C1C
- push {r3-r6}
- mov r5, #0x0
- lsr r6, r1, #0x1
- beq _02004C36
- sub r2, r1, #0x1
-_02004C26:
- sub r3, r2, r5
- ldrb r4, [r0, r5]
- ldrb r1, [r0, r3]
- strb r1, [r0, r5]
- add r5, r5, #0x1
- strb r4, [r0, r3]
- cmp r5, r6
- blo _02004C26
-_02004C36:
- pop {r3-r6}
- bx lr
- .balign 4
-
- thumb_func_start FUN_02004C3C
-FUN_02004C3C: ; 0x02004C3C
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_02003D30
- mov r0, #0xe
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x21
- bl FUN_02003D38
- add r6, r0, #0x0
- cmp r5, #0xe
- beq _02004C60
- cmp r5, #0xf
- beq _02004C60
- bl ErrorHandling
-_02004C60:
- add r0, r5, #0x0
- bl FUN_02004AAC
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02004C76
- mov r0, #0x0
- strb r0, [r4, #0x0]
- ldr r0, [r6, #0x0]
- bl FUN_02016A18
-_02004C76:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004C78
-FUN_02004C78: ; 0x02004C78
- ldr r3, _02004C7C ; =FUN_020C1E58
- bx r3
- .balign 4
-_02004C7C: .word FUN_020C1E58
-
- thumb_func_start FUN_02004C80
-FUN_02004C80: ; 0x02004C80
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl FUN_02003D30
- mov r0, #0x3
- bl FUN_02003D38
- mov r1, #0x1
- mov r3, #0xfa
- lsl r1, r1, #0xc
- mov r2, #0x0
- lsl r3, r3, #0x6
- str r4, [sp, #0x0]
- blx FUN_020C1FF0
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_02004CA4
-FUN_02004CA4: ; 0x02004CA4
- ldr r3, _02004CA8 ; =FUN_020C1F54
- bx r3
- .balign 4
-_02004CA8: .word FUN_020C1F54
-
- thumb_func_start FUN_02004CAC
-FUN_02004CAC: ; 0x02004CAC
- ldr r3, _02004CB0 ; =FUN_020C1FA4
- bx r3
- .balign 4
-_02004CB0: .word FUN_020C1FA4
-
- thumb_func_start FUN_02004CB4
-FUN_02004CB4: ; 0x02004CB4
- push {r3-r4, lr}
- sub sp, #0xc
- bl FUN_02003D30
- mov r0, #0x4
- bl FUN_02003D38
- mov r1, #0x0
- mov r2, #0x1c
- blx MI_CpuFill8
- mov r0, #0x3
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x4
- bl FUN_02003D38
- mov r2, #0x2
- ldr r1, _02004CF4 ; =FUN_02005068
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- str r0, [sp, #0x8]
- lsl r1, r2, #0xb
- ldr r3, _02004CF8 ; =0x000055F0
- add r0, r4, #0x0
- mov r2, #0x0
- blx FUN_020C1EA4
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_02004CF4: .word FUN_02005068
-_02004CF8: .word 0x000055F0
-
- thumb_func_start FUN_02004CFC
-FUN_02004CFC: ; 0x02004CFC
- ldr r3, _02004D00 ; =FUN_020C1E68
- bx r3
- .balign 4
-_02004D00: .word FUN_020C1E68
-
- thumb_func_start FUN_02004D04
-FUN_02004D04: ; 0x02004D04
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x13
- bl FUN_02003D38
- cmp r4, #0x8
- ble _02004D16
- mov r4, #0x8
- b _02004D1C
-_02004D16:
- cmp r4, #0x0
- bge _02004D1C
- mov r4, #0x0
-_02004D1C:
- strb r4, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_02004D20
-FUN_02004D20: ; 0x02004D20
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- blx FUN_020C0EA4
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D34
-FUN_02004D34: ; 0x02004D34
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02004D20
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D4C
-FUN_02004D4C: ; 0x02004D4C
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- blx FUN_020C0E7C
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D60
-FUN_02004D60: ; 0x02004D60
- push {r4, lr}
- add r4, r0, #0x0
- blx FUN_020C0174
- ldr r0, _02004D70 ; =0x021C3DD8
- str r4, [r0, #0x0]
- pop {r4, pc}
- nop
-_02004D70: .word 0x021C3DD8
-
- thumb_func_start FUN_02004D74
-FUN_02004D74: ; 0x02004D74
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x6
- bl FUN_02003D38
- str r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004D84
-FUN_02004D84: ; 0x02004D84
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x7
- bl FUN_02003D38
- str r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004D94
-FUN_02004D94: ; 0x02004D94
- push {r3, lr}
- mov r0, #0x7
- bl FUN_02003D38
- ldrh r1, [r0, #0x0]
- cmp r1, #0x0
- bne _02004DAA
- mov r1, #0x0
- strh r1, [r0, #0x0]
- add r0, r1, #0x0
- pop {r3, pc}
-_02004DAA:
- sub r1, r1, #0x1
- strh r1, [r0, #0x0]
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004DB4
-FUN_02004DB4: ; 0x02004DB4
- ldr r0, _02004DB8 ; =0x021C3DE0
- bx lr
- .balign 4
-_02004DB8: .word 0x021C3DE0
-
- thumb_func_start FUN_02004DBC
-FUN_02004DBC: ; 0x02004DBC
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x12
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004DCC
-FUN_02004DCC: ; 0x02004DCC
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- mov r0, #0x15
- add r6, r1, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- ldr r3, [sp, #0x8]
- add r1, r6, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r2, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r5, #0x0
- bl FUN_02004E44
- mov r0, #0x0
- strb r0, [r4, #0x0]
- mov r0, #0x5
- bl FUN_02003CE8
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02004E08
-FUN_02004E08: ; 0x02004E08
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- mov r0, #0x8
- add r6, r1, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x14]
- ldr r3, [sp, #0x8]
- add r1, r6, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x28]
- add r2, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r5, #0x0
- bl FUN_02004E44
- ldr r0, [sp, #0x20]
- str r0, [r4, #0x0]
- mov r0, #0x6
- bl FUN_02003CE8
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02004E44
-FUN_02004E44: ; 0x02004E44
- push {r3-r7, lr}
- add r6, r2, #0x0
- mov r0, #0x2
- add r5, r1, #0x0
- add r7, r3, #0x0
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- add r1, r6, #0x0
- bl FUN_020053CC
- mov r0, #0x0
- bl FUN_02004110
- add r0, r5, #0x0
- bl FUN_02004130
- add r0, r7, #0x0
- bl FUN_02004D84
- add r0, r5, #0x0
- bl FUN_020048F4
- str r0, [r4, #0x0]
- add r0, sp, #0x8
- ldrb r0, [r0, #0x10]
- bl FUN_02004DBC
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02004E80
-FUN_02004E80: ; 0x02004E80
- cmp r0, #0x0
- bne _02004E88
- mov r0, #0x0
- bx lr
-_02004E88:
- add r0, #0xc
- bx lr
-
- thumb_func_start FUN_02004E8C
-FUN_02004E8C: ; 0x02004E8C
- cmp r0, #0x0
- bne _02004E94
- mov r0, #0x0
- bx lr
-_02004E94:
- ldr r0, [r0, #0x8]
- bx lr
-
- thumb_func_start FUN_02004E98
-FUN_02004E98: ; 0x02004E98
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x5
- bl FUN_02004748
- bl FUN_02003F64
- lsl r0, r5, #0x10
- lsr r4, r0, #0x10
- ldr r0, _02004ECC ; =0x000001B9
- cmp r4, r0
- beq _02004EBC
- add r0, #0x36
- cmp r5, r0
- bgt _02004EBA
- cmp r5, #0x0
- bne _02004EBC
-_02004EBA:
- mov r4, #0x1
-_02004EBC:
- add r0, r4, #0x0
- bl FUN_02003FC4
- add r0, r4, #0x0
- bl FUN_02004ED0
- pop {r3-r5, pc}
- nop
-_02004ECC: .word 0x000001B9
-
- thumb_func_start FUN_02004ED0
-FUN_02004ED0: ; 0x02004ED0
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x20
- bl FUN_02003D38
- add r4, r0, #0x0
- lsl r0, r5, #0x10
- ldr r1, _02004F24 ; =0x000001B9
- lsr r0, r0, #0x10
- cmp r0, r1
- beq _02004EF2
- add r1, #0x36
- cmp r5, r1
- bgt _02004EF0
- cmp r5, #0x0
- bne _02004EF2
-_02004EF0:
- mov r0, #0x1
-_02004EF2:
- blx FUN_020C226C
- cmp r0, #0x0
- bne _02004F02
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
-_02004F02:
- ldr r0, [r0, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- blx FUN_020C20DC
- cmp r0, #0x0
- bne _02004F18
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
-_02004F18:
- mov r1, #0x0
- blx SND_GetWaveDataAddress
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
- nop
-_02004F24: .word 0x000001B9
-
- thumb_func_start FUN_02004F28
-FUN_02004F28: ; 0x02004F28
- push {r4-r6, lr}
- mov r0, #0x1
- add r5, r1, #0x0
- add r6, r2, #0x0
- bl FUN_02004F64
- mov r1, #0x3
- add r4, r0, #0x0
- add r0, r6, #0x0
- lsl r1, r1, #0x8
- ldr r5, [r5, #0x8]
- blx _s32_div_f
- lsl r1, r0, #0x1
- bpl _02004F50
- mov r0, #0x20
- blx _s32_div_f
- neg r0, r0
- b _02004F5A
-_02004F50:
- cmp r1, #0x0
- bne _02004F58
- mov r0, #0x20
- b _02004F5A
-_02004F58:
- lsl r0, r1, #0x5
-_02004F5A:
- mul r0, r4
- cmp r0, r5
- blo _02004F62
- mov r0, #0x0
-_02004F62:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004F64
-FUN_02004F64: ; 0x02004F64
- push {r3, lr}
- bl FUN_02003FF4
- blx FUN_020C0DD4
- pop {r3, pc}
-
- thumb_func_start FUN_02004F70
-FUN_02004F70: ; 0x02004F70
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x0]
- add r4, r1, #0x0
- add r6, r2, #0x0
- ldr r1, [sp, #0x0]
- mov r0, #0x1
- add r2, r3, #0x0
- bl FUN_02004F28
- add r1, r0, #0x0
- mov r12, r0
- sub r1, #0x64
- bpl _02004F8E
- mov r1, #0x0
-_02004F8E:
- ldr r0, [sp, #0x0]
- mov r3, #0x0
- add r0, r0, r1
- ldrb r0, [r0, #0xc]
- add r7, r3, #0x0
- cmp r0, #0x80
- bhs _02004FA0
- mov r0, #0x1
- b _02004FA2
-_02004FA0:
- sub r0, r3, #0x1
-_02004FA2:
- lsl r0, r0, #0x18
- asr r5, r0, #0x18
- mov r0, r12
- cmp r1, r0
- bhs _02005022
-_02004FAC:
- mov r0, #0x0
- cmp r5, #0x0
- ble _02004FC6
- ldr r2, [sp, #0x0]
- add r2, r2, r1
- str r2, [sp, #0x4]
- ldrb r2, [r2, #0xc]
- cmp r2, #0x80
- bls _02004FC2
- mov r0, #0x1
- b _02004FD8
-_02004FC2:
- add r3, r3, #0x1
- b _02004FD8
-_02004FC6:
- ldr r2, [sp, #0x0]
- add r2, r2, r1
- str r2, [sp, #0x4]
- ldrb r2, [r2, #0xc]
- cmp r2, #0x80
- bhs _02004FD6
- mov r0, #0x1
- b _02004FD8
-_02004FD6:
- add r3, r3, #0x1
-_02004FD8:
- cmp r0, #0x1
- bne _0200501A
- ldr r5, _02005064 ; =0x020ECB8C
- mov r2, #0x0
-_02004FE0:
- ldrb r0, [r5, #0x0]
- cmp r3, r0
- bge _02004FEA
- add r7, r2, #0x0
- b _02004FF2
-_02004FEA:
- add r2, r2, #0x1
- add r5, r5, #0x1
- cmp r2, #0x9
- blt _02004FE0
-_02004FF2:
- cmp r7, r6
- blt _02004FF8
- sub r7, r6, #0x1
-_02004FF8:
- cmp r3, #0x0
- beq _02005006
- sub r0, r6, #0x1
- sub r0, r0, r7
- ldrb r2, [r4, r0]
- add r2, r2, #0x1
- strb r2, [r4, r0]
-_02005006:
- ldr r0, [sp, #0x4]
- mov r3, #0x0
- ldrb r0, [r0, #0xc]
- cmp r0, #0x80
- bhs _02005014
- mov r0, #0x1
- b _02005016
-_02005014:
- sub r0, r3, #0x1
-_02005016:
- lsl r0, r0, #0x18
- asr r5, r0, #0x18
-_0200501A:
- add r1, r1, #0x2
- mov r0, r12
- cmp r1, r0
- blo _02004FAC
-_02005022:
- mov r2, #0x0
- cmp r6, #0x0
- ble _02005038
- mov r0, #0x9
-_0200502A:
- ldrb r1, [r4, r2]
- cmp r1, #0xa
- blo _02005032
- strb r0, [r4, r2]
-_02005032:
- add r2, r2, #0x1
- cmp r2, r6
- blt _0200502A
-_02005038:
- sub r2, r6, #0x1
- mov r3, #0x0
- cmp r2, #0x0
- ble _02005060
-_02005040:
- ldrb r0, [r4, r3]
- add r1, r4, r3
- cmp r0, #0x0
- bne _0200505A
- ldrb r0, [r1, #0x1]
- cmp r0, #0x0
- beq _0200505A
- add r0, r3, #0x1
- ldrb r0, [r4, r0]
- add sp, #0x8
- lsr r0, r0, #0x1
- strb r0, [r1, #0x0]
- pop {r3-r7, pc}
-_0200505A:
- add r3, r3, #0x1
- cmp r3, r2
- blt _02005040
-_02005060:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02005064: .word 0x020ECB8C
-
- thumb_func_start FUN_02005068
-FUN_02005068: ; 0x02005068
- push {r3-r7, lr}
- sub sp, #0x30
- add r5, r0, #0x0
- ldr r0, [sp, #0x48]
- add r6, r1, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x13
- str r2, [sp, #0x0]
- add r4, r3, #0x0
- bl FUN_02003D38
- add r7, r0, #0x0
- cmp r4, #0x1
- beq _0200508A
- ldr r0, [sp, #0x0]
- lsr r0, r0, #0x1
- str r0, [sp, #0x0]
-_0200508A:
- ldrb r2, [r7, #0x0]
- cmp r2, #0x0
- beq _0200515A
- mov r0, #0x0
- cmp r2, #0x0
- ble _020050BC
- add r1, sp, #0x10
-_02005098:
- ldr r3, [sp, #0x0]
- sub r2, r3, r2
- add r2, r0, r2
- lsl r2, r2, #0x1
- ldrsh r2, [r5, r2]
- strh r2, [r1, #0x0]
- ldrb r3, [r7, #0x0]
- ldr r2, [sp, #0x0]
- sub r2, r2, r3
- add r2, r0, r2
- lsl r2, r2, #0x1
- ldrsh r2, [r6, r2]
- add r0, r0, #0x1
- strh r2, [r1, #0x2]
- ldrb r2, [r7, #0x0]
- add r1, r1, #0x4
- cmp r0, r2
- blt _02005098
-_020050BC:
- ldr r0, [sp, #0x0]
- sub r4, r0, #0x1
- sub r0, r2, #0x1
- cmp r4, r0
- blt _02005126
- lsl r1, r4, #0x1
- add r0, r5, r1
- str r0, [sp, #0x8]
- add r0, r6, r1
- str r0, [sp, #0x4]
-_020050D0:
- mov r0, #0x0
- add r1, r0, #0x0
- cmp r2, #0x0
- ble _020050E6
-_020050D8:
- sub r3, r4, r1
- lsl r3, r3, #0x1
- ldrsh r3, [r5, r3]
- add r1, r1, #0x1
- add r0, r0, r3
- cmp r1, r2
- blt _020050D8
-_020050E6:
- add r1, r2, #0x0
- blx _s32_div_f
- ldr r1, [sp, #0x8]
- strh r0, [r1, #0x0]
- mov r0, #0x0
- ldrb r1, [r7, #0x0]
- add r2, r0, #0x0
- cmp r1, #0x0
- ble _02005108
-_020050FA:
- sub r3, r4, r2
- lsl r3, r3, #0x1
- ldrsh r3, [r6, r3]
- add r2, r2, #0x1
- add r0, r0, r3
- cmp r2, r1
- blt _020050FA
-_02005108:
- blx _s32_div_f
- ldr r1, [sp, #0x4]
- sub r4, r4, #0x1
- strh r0, [r1, #0x0]
- ldr r0, [sp, #0x8]
- ldrb r2, [r7, #0x0]
- sub r0, r0, #0x2
- str r0, [sp, #0x8]
- add r0, r1, #0x0
- sub r0, r0, #0x2
- str r0, [sp, #0x4]
- sub r0, r2, #0x1
- cmp r4, r0
- bge _020050D0
-_02005126:
- mov r1, #0x0
- cmp r2, #0x0
- ble _0200514A
- add r0, sp, #0x10
- mov r4, #0x2
-_02005130:
- mov r2, #0x0
- ldrsh r3, [r0, r2]
- ldr r2, [sp, #0xc]
- add r1, r1, #0x1
- strh r3, [r2, #0x0]
- ldrsh r3, [r0, r4]
- add r0, r0, #0x4
- strh r3, [r2, #0x2]
- add r2, r2, #0x4
- str r2, [sp, #0xc]
- ldrb r2, [r7, #0x0]
- cmp r1, r2
- blt _02005130
-_0200514A:
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- blx DC_FlushRange
- ldr r1, [sp, #0x0]
- add r0, r6, #0x0
- blx DC_FlushRange
-_0200515A:
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02005160
-FUN_02005160: ; 0x02005160
- ldr r3, _02005168 ; =FUN_020C1148
- add r1, r0, #0x0
- mov r0, #0x7
- bx r3
- .balign 4
-_02005168: .word FUN_020C1148
-
- thumb_func_start FUN_0200516C
-FUN_0200516C: ; 0x0200516C
- push {r3, lr}
- cmp r0, #0x0
- bne _02005180
- ldr r0, _020051A4 ; =0x000007FF
- bl FUN_02005160
- mov r0, #0x0
- bl FUN_02004CA4
- b _0200519C
-_02005180:
- cmp r0, #0x1
- ldr r0, _020051A8 ; =0x00007FFF
- bne _02005192
- bl FUN_02005160
- mov r0, #0x1e
- bl FUN_02004C80
- b _0200519C
-_02005192:
- bl FUN_02005160
- mov r0, #0xf
- bl FUN_02004C80
-_0200519C:
- bl FUN_02004C78
- pop {r3, pc}
- nop
-_020051A4: .word 0x000007FF
-_020051A8: .word 0x00007FFF
-
- thumb_func_start FUN_020051AC
-FUN_020051AC: ; 0x020051AC
- push {r3, lr}
- bl FUN_02005404
- cmp r0, #0x0
- bne _020051E0
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- beq _020051E0
- bl FUN_02004124
- ldr r1, _020051E8 ; =0x0000047E
- cmp r0, r1
- beq _020051E0
- bl FUN_02005454
- mov r0, #0x1
- add r1, r0, #0x0
- bl FUN_020047C8
- pop {r3, pc}
-_020051E0:
- bl FUN_0200541C
- pop {r3, pc}
- nop
-_020051E8: .word 0x0000047E
-
- thumb_func_start FUN_020051EC
-FUN_020051EC: ; 0x020051EC
- ldr r3, _020051F0 ; =FUN_020C1180
- bx r3
- .balign 4
-_020051F0: .word FUN_020C1180
-
- thumb_func_start FUN_020051F4
-FUN_020051F4: ; 0x020051F4
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C3980
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200526C
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200521C
-FUN_0200521C: ; 0x0200521C
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- add r4, r0, #0x0
- bl FUN_02004018
- add r6, r0, #0x0
- cmp r4, #0x7
- bne _0200523E
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02005288
- add r4, r0, #0x0
- b _02005258
-_0200523E:
- cmp r4, #0x1
- bne _02005250
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_020052B8
- add r4, r0, #0x0
- b _02005258
-_02005250:
- bl ErrorHandling
- mov r0, #0x0
- pop {r4-r6, pc}
-_02005258:
- mov r0, #0x0
- bl FUN_02004DBC
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0200526C
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200526C
-FUN_0200526C: ; 0x0200526C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004110
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- mov r0, #0x1
- bl FUN_02003CE8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02005288
-FUN_02005288: ; 0x02005288
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x3
- add r4, r2, #0x0
- bl FUN_02004748
- bl FUN_02003F64
- add r0, r5, #0x0
- bl FUN_02003F90
- mov r0, #0x1a
- bl FUN_02003D38
- bl FUN_02003F3C
- add r0, r4, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C3980
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020052B8
-FUN_020052B8: ; 0x020052B8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x12
- add r6, r2, #0x0
- bl FUN_02003D38
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- bl FUN_02004900
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_020045C4
- add r0, r6, #0x0
- bl FUN_02003FF4
- add r6, r0, #0x0
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- mov r1, #0x0
- mvn r1, r1
- add r2, r0, #0x0
- add r0, r6, #0x0
- add r3, r1, #0x0
- str r5, [sp, #0x0]
- blx FUN_020C3910
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02005308
-FUN_02005308: ; 0x02005308
- push {r3-r5, lr}
- add r5, r1, #0x0
- cmp r0, #0x4
- beq _02005318
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
-_02005318:
- add r0, r5, #0x0
- bl FUN_020048D0
- cmp r0, #0x7
- beq _0200532A
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
-_0200532A:
- add r0, r5, #0x0
- mov r1, #0x1
- bl FUN_02003FA8
- mov r0, #0x7
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C3980
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02004110
- mov r0, #0x1
- bl FUN_02003CE8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005350
-FUN_02005350: ; 0x02005350
- push {r4, lr}
- add r4, r0, #0x0
- blx FUN_020C0FDC
- add r0, r4, #0x0
- bl FUN_020048D0
- cmp r0, #0xff
- beq _0200536E
- bl FUN_02004018
- bl FUN_02003FF4
- blx FUN_020C0F68
-_0200536E:
- bl FUN_02005374
- pop {r4, pc}
-
- thumb_func_start FUN_02005374
-FUN_02005374: ; 0x02005374
- push {r3, lr}
- mov r0, #0x0
- bl FUN_02004110
- mov r0, #0x0
- bl FUN_02004130
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200538C
-FUN_0200538C: ; 0x0200538C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _020053C8
- bl FUN_02004018
- add r7, r0, #0x0
- cmp r4, #0x0
- bne _020053B2
- mov r1, #0x0
- add r2, r1, #0x0
- bl FUN_02004828
-_020053B2:
- add r0, r7, #0x0
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl FUN_02004828
- add r0, r5, #0x0
- bl FUN_02004D74
- mov r0, #0x3
- bl FUN_02003CE8
-_020053C8:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020053CC
-FUN_020053CC: ; 0x020053CC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- add r6, r0, #0x0
- cmp r6, #0xff
- beq _02005402
- bl FUN_02005404
- cmp r0, #0x0
- bne _020053FC
- add r0, r6, #0x0
- bl FUN_02004018
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02004828
- add r0, r4, #0x0
- bl FUN_02004D74
-_020053FC:
- mov r0, #0x4
- bl FUN_02003CE8
-_02005402:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005404
-FUN_02005404: ; 0x02005404
- push {r3, lr}
- mov r0, #0x6
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02005410
-FUN_02005410: ; 0x02005410
- push {r3, lr}
- bl FUN_020048D0
- bl FUN_020048BC
- pop {r3, pc}
-
- thumb_func_start FUN_0200541C
-FUN_0200541C: ; 0x0200541C
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- blx FUN_020C0F9C
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005440
- mov r0, #0xe
- bl FUN_02004AAC
-_02005440:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200544C
- mov r0, #0xf
- bl FUN_02004AAC
-_0200544C:
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005454
-FUN_02005454: ; 0x02005454
- push {r3-r7, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r7, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x7
- bl FUN_02003FF4
- mov r1, #0x0
- blx FUN_020C10A4
- bl FUN_02005374
- mov r5, #0x0
- add r4, r5, #0x0
-_0200547A:
- add r0, r5, #0x3
- add r1, r4, #0x0
- bl FUN_020054F8
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200547A
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r7, #0x0]
- cmp r0, #0x1
- bne _0200549A
- mov r0, #0xe
- bl FUN_02004AAC
-_0200549A:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _020054A6
- mov r0, #0xf
- bl FUN_02004AAC
-_020054A6:
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020054A8
-FUN_020054A8: ; 0x020054A8
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_020054C8
- add r6, r0, #0x0
- ldr r1, _020054C4 ; =0x0000FFFF
- add r0, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02005530
- add r0, r6, #0x0
- pop {r4-r6, pc}
- nop
-_020054C4: .word 0x0000FFFF
-
- thumb_func_start FUN_020054C8
-FUN_020054C8: ; 0x020054C8
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C3980
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020054F0
-FUN_020054F0: ; 0x020054F0
- ldr r3, _020054F4 ; =FUN_020C0FDC
- bx r3
- .balign 4
-_020054F4: .word FUN_020C0FDC
-
- thumb_func_start FUN_020054F8
-FUN_020054F8: ; 0x020054F8
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_02003FF4
- add r1, r4, #0x0
- blx FUN_020C10A4
- pop {r4, pc}
-
- thumb_func_start FUN_02005508
-FUN_02005508: ; 0x02005508
- push {r3, lr}
- bl FUN_020048D0
- bl FUN_020048BC
- pop {r3, pc}
-
- thumb_func_start FUN_02005514
-FUN_02005514: ; 0x02005514
- push {r4, lr}
- mov r4, #0x0
-_02005518:
- add r0, r4, #0x3
- bl FUN_020048BC
- cmp r0, #0x1
- bne _02005526
- mov r0, #0x1
- pop {r4, pc}
-_02005526:
- add r4, r4, #0x1
- cmp r4, #0x4
- blt _02005518
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02005530
-FUN_02005530: ; 0x02005530
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- blx FUN_020C0E7C
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200554C
-FUN_0200554C: ; 0x0200554C
- push {r3-r7, lr}
- add r6, r0, #0x0
- mov r0, #0x3
- bl FUN_02004018
- ldr r7, _02005574 ; =0x0000FFFF
- add r4, r0, #0x0
- mov r5, #0x0
-_0200555C:
- add r0, r4, r5
- bl FUN_02003FF4
- add r1, r7, #0x0
- add r2, r6, #0x0
- blx FUN_020C0E7C
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200555C
- pop {r3-r7, pc}
- nop
-_02005574: .word 0x0000FFFF
-
- thumb_func_start FUN_02005578
-FUN_02005578: ; 0x02005578
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x23
- bl FUN_02003D38
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- beq _0200559C
- add r1, #0x36
- cmp r5, r1
- bhi _0200559A
- cmp r5, #0x0
- bne _0200559C
-_0200559A:
- mov r5, #0x1
-_0200559C:
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- bne _020055BC
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- mov r2, #0x7f
- add r3, r1, #0x0
- bl FUN_02005D48
- cmp r0, #0x1
- bne _020055BC
- mov r0, #0x0
- bl FUN_02005E80
- mov r0, #0x1
- pop {r3-r5, pc}
-_020055BC:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020055E8
- mov r0, #0x0
- bl FUN_02005614
- mov r0, #0x1
- bl FUN_02003FF4
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- blx FUN_020C3910
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x1
- bl FUN_02004858
- b _02005606
-_020055E8:
- mov r0, #0x8
- bl FUN_02003FF4
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- blx FUN_020C3910
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x8
- bl FUN_02004858
-_02005606:
- mov r0, #0x0
- bl FUN_02005E80
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005610: .word 0x000001B9
-
- thumb_func_start FUN_02005614
-FUN_02005614: ; 0x02005614
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- mov r0, #0x1
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C10A4
- mov r0, #0x8
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C10A4
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005658
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005658:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200566A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_0200566A:
- bl FUN_02005DFC
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005670
-FUN_02005670: ; 0x02005670
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005696
- mov r0, #0xe
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_02005696:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _020056A4
- mov r0, #0xf
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_020056A4:
- mov r0, #0x0
- bl FUN_020048BC
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020056AC
-FUN_020056AC: ; 0x020056AC
- push {r3-r7, lr}
- sub sp, #0x20
- str r0, [sp, #0x4]
- mov r0, #0xf
- str r1, [sp, #0x8]
- add r5, r2, #0x0
- add r6, r3, #0x0
- ldr r7, [sp, #0x38]
- bl FUN_02003D38
- str r0, [sp, #0x14]
- mov r0, #0x10
- bl FUN_02003D38
- str r0, [sp, #0x10]
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x1d
- bl FUN_02003D38
- str r0, [sp, #0xc]
- mov r0, #0x23
- bl FUN_02003D38
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r0, r0, #0x1
- str r0, [sp, #0x1c]
- add r0, #0x40
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- str r0, [sp, #0x18]
- sub r0, #0x1e
- str r0, [sp, #0x18]
- cmp r0, #0x0
- bgt _020056FC
- mov r0, #0x1
- str r0, [sp, #0x18]
-_020056FC:
- mov r0, #0x0
- strb r0, [r4, #0x0]
- ldr r0, [sp, #0x14]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005714
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005714:
- ldr r0, [sp, #0x10]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005728
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005728:
- ldr r4, [sp, #0x8]
- ldr r0, _02005AB4 ; =0x000001B9
- add r1, r4, #0x0
- cmp r1, r0
- beq _0200573E
- add r0, #0x36
- cmp r1, r0
- bhi _0200573C
- add r0, r4, #0x0
- bne _0200573E
-_0200573C:
- mov r4, #0x1
-_0200573E:
- ldr r0, _02005AB4 ; =0x000001B9
- ldr r1, [sp, #0x8]
- cmp r1, r0
- bne _020057B4
- ldr r1, [sp, #0x4]
- cmp r1, #0xc
- bhi _020057AE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02005758: ; jump table (using 16-bit offset)
- .short _02005772 - _02005758 - 2; case 0
- .short _02005772 - _02005758 - 2; case 1
- .short _02005772 - _02005758 - 2; case 2
- .short _020057AE - _02005758 - 2; case 3
- .short _020057AE - _02005758 - 2; case 4
- .short _02005772 - _02005758 - 2; case 5
- .short _020057AE - _02005758 - 2; case 6
- .short _020057AE - _02005758 - 2; case 7
- .short _020057AE - _02005758 - 2; case 8
- .short _020057AE - _02005758 - 2; case 9
- .short _020057AE - _02005758 - 2; case 10
- .short _02005772 - _02005758 - 2; case 11
- .short _02005772 - _02005758 - 2; case 12
-_02005772:
- bl FUN_02005578
- ldr r0, [sp, #0xc]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02005794
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _020057A8
-_02005794:
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xe
- add r1, r6, #0x0
- bl FUN_02004AF8
-_020057A8:
- add sp, #0x20
- mov r0, #0x1
- pop {r3-r7, pc}
-_020057AE:
- mov r0, #0x1
- bl FUN_02005E80
-_020057B4:
- ldr r0, [sp, #0x4]
- cmp r0, #0xe
- bls _020057BC
- b _02005AC2
-_020057BC:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020057C8: ; jump table (using 16-bit offset)
- .short _020057E6 - _020057C8 - 2; case 0
- .short _02005802 - _020057C8 - 2; case 1
- .short _02005826 - _020057C8 - 2; case 2
- .short _02005868 - _020057C8 - 2; case 3
- .short _020058B2 - _020057C8 - 2; case 4
- .short _02005900 - _020057C8 - 2; case 5
- .short _02005928 - _020057C8 - 2; case 6
- .short _0200596C - _020057C8 - 2; case 7
- .short _0200599C - _020057C8 - 2; case 8
- .short _020059CA - _020057C8 - 2; case 9
- .short _020059FE - _020057C8 - 2; case 10
- .short _02005A2E - _020057C8 - 2; case 11
- .short _02005A56 - _020057C8 - 2; case 12
- .short _02005A86 - _020057C8 - 2; case 13
- .short _02005ABC - _020057C8 - 2; case 14
-_020057E6:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _02005AC2
-_02005802:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- b _02005AC2
-_02005826:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x40
- bl FUN_02004D20
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_02005868:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1e
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0xc0
- bl FUN_02004D20
- add r0, r4, #0x0
- mov r1, #0x10
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_020058B2:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xf
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x86
- mov r0, #0xe
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- mov r1, #0x3f
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r4, #0x0
- mvn r1, r1
- str r7, [sp, #0x0]
- bl FUN_02005BF8
- mov r1, #0x86
- mov r0, #0xf
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- b _02005AC2
-_02005900:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0xe1
- bl FUN_02004D20
- b _02005AC2
-_02005928:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x2c
- bl FUN_02004D20
- mov r1, #0x3f
- add r0, r4, #0x0
- mvn r1, r1
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_0200596C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0xb
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x81
- bl FUN_02004D20
- b _02005AC2
-_0200599C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x3c
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x3c
- bl FUN_02004D20
- b _02005AC2
-_020059CA:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xd
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x1a
- mov r0, #0xe
- lsl r1, r1, #0xa
- bl FUN_02004AE4
- b _02005AC2
-_020059FE:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x64
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x2d
- bl FUN_02004D20
- b _02005AC2
-_02005A2E:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl FUN_02004D20
- b _02005AC2
-_02005A56:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl FUN_02004D20
- b _02005AC2
-_02005A86:
- add r0, r4, #0x0
- bl FUN_02005578
- add r0, r4, #0x0
- mov r1, #0x1
- mov r2, #0x7f
- bl FUN_02005AC8
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- mov r0, #0x8
- add r1, r6, #0x0
- mov r2, #0x0
- bl FUN_02004828
- b _02005AC2
- .balign 4
-_02005AB4: .word 0x000001B9
-_02005AB8: .word 0x0000FFFF
-_02005ABC:
- add r0, r4, #0x0
- bl FUN_02005578
-_02005AC2:
- mov r0, #0x1
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02005AC8
-FUN_02005AC8: ; 0x02005AC8
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- add r1, r2, #0x0
- bl FUN_0200483C
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005AE0
-FUN_02005AE0: ; 0x02005AE0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x22
- bl FUN_02003D38
- add r6, r0, #0x0
- bl FUN_02005BA0
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02016998
- add r4, r0, #0x0
- bne _02005B04
- bl ErrorHandling
- pop {r4-r6, pc}
-_02005B04:
- mov r2, #0x0
- strb r2, [r4, #0x0]
- strb r2, [r4, #0x1]
- strb r2, [r4, #0x2]
- strb r2, [r4, #0x3]
- strb r2, [r4, #0x4]
- strb r2, [r4, #0x5]
- strb r2, [r4, #0x6]
- strb r2, [r4, #0x7]
- ldr r0, _02005B28 ; =FUN_02005B2C
- add r1, r4, #0x0
- str r5, [r4, #0x0]
- bl FUN_0200CA44
- str r0, [r4, #0x4]
- str r0, [r6, #0x0]
- pop {r4-r6, pc}
- nop
-_02005B28: .word FUN_02005B2C
-
- thumb_func_start FUN_02005B2C
-FUN_02005B2C: ; 0x02005B2C
- push {r4-r6, lr}
- mov r0, #0xf
- add r5, r1, #0x0
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- ldr r2, [r5, #0x0]
- add r4, r0, #0x0
- cmp r2, #0xa
- bne _02005B58
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_02004828
- ldr r2, [r5, #0x0]
- mov r0, #0x8
- mov r1, #0x0
- bl FUN_02004828
-_02005B58:
- ldr r0, [r5, #0x0]
- sub r0, r0, #0x1
- str r0, [r5, #0x0]
- bl FUN_02005670
- cmp r0, #0x0
- bne _02005B6A
- mov r0, #0x0
- str r0, [r5, #0x0]
-_02005B6A:
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- bgt _02005B9E
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005B88
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005B88:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02005B9A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005B9A:
- bl FUN_02005BA0
-_02005B9E:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005BA0
-FUN_02005BA0: ; 0x02005BA0
- push {r3-r5, lr}
- mov r0, #0x22
- bl FUN_02003D38
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005BC2
- bl FUN_0201B6C8
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- bl FUN_0200CAB4
- add r0, r5, #0x0
- bl FUN_02016A18
-_02005BC2:
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005BC8
-FUN_02005BC8: ; 0x02005BC8
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r1, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- add r0, r1, #0x0
- bl FUN_02005E80
- add r0, r5, #0x0
- bl FUN_02005578
- add r5, r0, #0x0
- ldr r1, _02005BF4 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r4, #0x0
- bl FUN_02004D20
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005BF4: .word 0x0000FFFF
-
- thumb_func_start FUN_02005BF8
-FUN_02005BF8: ; 0x02005BF8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- mov r0, #0xf
- bl FUN_02004984
- ldr r0, [sp, #0x18]
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- add r2, r6, #0x0
- mov r3, #0xf
- bl FUN_02004B30
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02005C28
-FUN_02005C28: ; 0x02005C28
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_020048F4
- add r0, r5, #0x0
- bl FUN_02005CEC
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005C48
- mov r1, #0x1
- bl FUN_020047C8
-_02005C48:
- mov r0, #0x1c
- bl FUN_02003D38
- bl FUN_02003F3C
- add r0, r5, #0x0
- mov r1, #0x3
- bl FUN_02003FA8
- mov r0, #0x2
- bl FUN_02003FF4
- add r1, r5, #0x0
- blx FUN_020C3980
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x2
- bl FUN_02004858
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005C74
-FUN_02005C74: ; 0x02005C74
- push {r4, lr}
- mov r0, #0xd
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x2
- bl FUN_020048BC
- cmp r0, #0x0
- beq _02005C8C
- mov r0, #0x1
- pop {r4, pc}
-_02005C8C:
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005C9A
- sub r0, r0, #0x1
- strh r0, [r4, #0x0]
- mov r0, #0x1
- pop {r4, pc}
-_02005C9A:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005CA0
-FUN_02005CA0: ; 0x02005CA0
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x2
- bl FUN_02003FF4
- add r1, r4, #0x0
- blx FUN_020C10A4
- mov r0, #0x6
- bl FUN_02004748
- bl FUN_02003F64
- pop {r4, pc}
-
- thumb_func_start FUN_02005CBC
-FUN_02005CBC: ; 0x02005CBC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- bl FUN_02005C74
- cmp r0, #0x1
- bne _02005CD0
- mov r0, #0x1
- pop {r3, pc}
-_02005CD0:
- mov r0, #0x0
- bl FUN_02005CA0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005CE8
- mov r1, #0x0
- bl FUN_020047C8
-_02005CE8:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02005CEC
-FUN_02005CEC: ; 0x02005CEC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- mov r1, #0xf
- strh r1, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02005CFC
-FUN_02005CFC: ; 0x02005CFC
- push {r3, lr}
- mov r0, #0x1d
- bl FUN_02003D38
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005D1C
- mov r0, #0xe
- bl FUN_02004ABC
- cmp r0, #0x0
- bne _02005D1C
- bl FUN_02005DFC
- mov r0, #0x1
- pop {r3, pc}
-_02005D1C:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02005D20
-FUN_02005D20: ; 0x02005D20
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x1e
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02029F04
- cmp r0, #0x0
- bne _02005D3A
- mov r0, #0x0
- pop {r3-r5, pc}
-_02005D3A:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- beq _02005D44
- mov r0, #0x1
- pop {r3-r5, pc}
-_02005D44:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005D48
-FUN_02005D48: ; 0x02005D48
- push {r3-r7, lr}
- sub sp, #0x30
- add r6, r0, #0x0
- add r5, r2, #0x0
- add r7, r3, #0x0
- bl FUN_02004DB4
- str r0, [sp, #0x0]
- mov r0, #0x1d
- bl FUN_02003D38
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- bl FUN_02005D20
- cmp r0, #0x0
- bne _02005D70
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02005D70:
- mov r0, #0x0
- bl FUN_02005614
- bl FUN_02005DFC
- mov r0, #0xe
- bl FUN_02004984
- bl FUN_0201B9EC
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x13
- sub r1, r1, r2
- mov r0, #0x13
- ror r1, r0
- add r0, r2, r1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r6, #0x0
- bl FUN_02029F10
- add r1, r0, #0x0
- ldr r0, [sp, #0x0]
- bl FUN_02029F14
- mov r0, #0xe
- bl FUN_02004930
- str r0, [sp, #0x8]
- mov r0, #0x0
- str r0, [sp, #0xc]
- bl FUN_02004DB4
- str r0, [sp, #0x10]
- mov r0, #0x0
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- mov r0, #0x7d
- lsl r0, r0, #0x4
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- mov r0, #0x2
- lsl r0, r0, #0xe
- add r0, r4, r0
- str r0, [sp, #0x28]
- lsr r0, r7, #0x1f
- add r0, r7, r0
- asr r0, r0, #0x1
- add r0, #0x40
- str r0, [sp, #0x2c]
- add r0, sp, #0x8
- mov r1, #0xe
- str r5, [sp, #0x24]
- bl FUN_02004A6C
- add r4, r0, #0x0
- mov r0, #0xe
- add r1, r5, #0x0
- bl FUN_02004AF8
- ldr r0, [sp, #0x4]
- mov r1, #0x1
- strb r1, [r0, #0x0]
- mov r0, #0x0
- bl FUN_02005E80
- add r0, r4, #0x0
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02005DFC
-FUN_02005DFC: ; 0x02005DFC
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x1d
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005E20
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005E20:
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02005E28
-FUN_02005E28: ; 0x02005E28
- push {lr}
- sub sp, #0x1c
- mov r0, #0x2
- str r0, [sp, #0x0]
- bl FUN_02004DB4
- mov r1, #0x7d
- str r0, [sp, #0x4]
- lsl r1, r1, #0x4
- mov r0, #0x1f
- str r1, [sp, #0x8]
- tst r0, r1
- beq _02005E48
- mov r0, #0x1f
- bic r1, r0
- str r1, [sp, #0x8]
-_02005E48:
- ldr r0, _02005E60 ; =0x00004174
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- add r0, sp, #0x0
- bl FUN_02004914
- add sp, #0x1c
- pop {pc}
- nop
-_02005E60: .word 0x00004174
-
- thumb_func_start FUN_02005E64
-FUN_02005E64: ; 0x02005E64
- ldr r3, _02005E68 ; =FUN_0200491C
- bx r3
- .balign 4
-_02005E68: .word FUN_0200491C
-
- thumb_func_start FUN_02005E6C
-FUN_02005E6C: ; 0x02005E6C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02004DB4
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_02029F4C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005E80
-FUN_02005E80: ; 0x02005E80
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1e
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005E90
-FUN_02005E90: ; 0x02005E90
- push {r3-r7, lr}
- add r5, r0, #0x0
- mov r0, #0x23
- add r7, r1, #0x0
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl FUN_02003D38
- cmp r5, #0x0
- bne _02005EB2
- ldr r0, [r0, #0x0]
- add r1, r7, #0x0
- add r2, r4, #0x0
- add r3, r6, #0x0
- bl FUN_02005D48
- b _02005EBE
-_02005EB2:
- add r0, r5, #0x0
- add r1, r7, #0x0
- add r2, r4, #0x0
- add r3, r6, #0x0
- bl FUN_02005D48
-_02005EBE:
- cmp r0, #0x0
- bne _02005ED8
- mov r0, #0x1
- bl FUN_02005E80
- mov r0, #0xb
- str r0, [sp, #0x0]
- ldr r1, _02005EDC ; =0x000001B9
- mov r0, #0x0
- add r2, r6, #0x0
- add r3, r4, #0x0
- bl FUN_020056AC
-_02005ED8:
- pop {r3-r7, pc}
- nop
-_02005EDC: .word 0x000001B9
-
- thumb_func_start FUN_02005EE0
-FUN_02005EE0: ; 0x02005EE0
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02029F04
- cmp r0, #0x0
- bne _02005EF0
- mov r0, #0x0
- pop {r4, pc}
-_02005EF0:
- add r0, r4, #0x0
- bl FUN_02029F10
- mov r1, #0xf
- ldrsb r0, [r0, r1]
- sub r1, #0x2d
- cmp r0, r1
- bge _02005F04
- mov r0, #0x1
- pop {r4, pc}
-_02005F04:
- cmp r0, #0x1e
- blt _02005F10
- cmp r0, #0x80
- bge _02005F10
- mov r0, #0x2
- pop {r4, pc}
-_02005F10:
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02005F14
-FUN_02005F14: ; 0x02005F14
- cmp r0, #0xb
- bgt _02005F2E
- bge _02005F32
- cmp r0, #0x5
- bgt _02005F36
- cmp r0, #0x0
- blt _02005F36
- beq _02005F32
- cmp r0, #0x1
- beq _02005F32
- cmp r0, #0x5
- beq _02005F32
- b _02005F36
-_02005F2E:
- cmp r0, #0xc
- bne _02005F36
-_02005F32:
- mov r0, #0x1
- bx lr
-_02005F36:
- mov r0, #0x0
- bx lr
- .balign 4
-
- thumb_func_start FUN_02005F3C
-FUN_02005F3C: ; 0x02005F3C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- beq _02005F4A
- bl ErrorHandling
-_02005F4A:
- ldr r1, [r4, #0x0]
- mov r0, #0x0
- blx FS_UnloadOverlay
- cmp r0, #0x1
- beq _02005F5A
- bl ErrorHandling
-_02005F5A:
- mov r0, #0x0
- str r0, [r4, #0x4]
- pop {r4, pc}
-
- thumb_func_start FUN_02005F60
-FUN_02005F60: ; 0x02005F60
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02005F90
- bl FUN_0200610C
- mov r2, #0x0
- add r3, r0, #0x0
-_02005F70:
- ldr r1, [r3, #0x4]
- cmp r1, #0x1
- bne _02005F86
- ldr r1, [r3, #0x0]
- cmp r4, r1
- bne _02005F86
- lsl r1, r2, #0x3
- add r0, r0, r1
- bl FUN_02005F3C
- pop {r4, pc}
-_02005F86:
- add r2, r2, #0x1
- add r3, #0x8
- cmp r2, #0x8
- blt _02005F70
- pop {r4, pc}
-
- thumb_func_start FUN_02005F90
-FUN_02005F90: ; 0x02005F90
- push {lr}
- sub sp, #0x2c
- add r2, r0, #0x0
- add r0, sp, #0x0
- mov r1, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x1
- beq _02005FA6
- bl ErrorHandling
-_02005FA6:
- mov r0, #0x2
- ldr r2, [sp, #0x4]
- lsl r0, r0, #0x18
- cmp r2, r0
- bhi _02005FBC
- lsr r0, r0, #0x1
- cmp r2, r0
- blo _02005FBC
- add sp, #0x2c
- mov r0, #0x1
- pop {pc}
-_02005FBC:
- mov r0, #0x1
- ldr r1, _02005FD8 ; =0x027E0000
- lsl r0, r0, #0xe
- add r0, r1, r0
- cmp r2, r0
- bhi _02005FD2
- cmp r2, r1
- blo _02005FD2
- add sp, #0x2c
- mov r0, #0x2
- pop {pc}
-_02005FD2:
- mov r0, #0x0
- add sp, #0x2c
- pop {pc}
- .balign 4
-_02005FD8: .word 0x027E0000
-
- thumb_func_start FUN_02005FDC
-FUN_02005FDC: ; 0x02005FDC
- push {r3-r7, lr}
- add r4, r1, #0x0
- mov r1, #0x0
- mvn r1, r1
- add r5, r0, #0x0
- str r1, [sp, #0x0]
- bl FUN_02006090
- cmp r0, #0x0
- bne _02005FF4
- mov r0, #0x0
- pop {r3-r7, pc}
-_02005FF4:
- add r0, r5, #0x0
- bl FUN_02005F90
- add r7, r0, #0x0
- bl FUN_0200610C
- add r3, r0, #0x0
- mov r6, #0x0
- add r1, r3, #0x0
-_02006006:
- ldr r0, [r1, #0x4]
- cmp r0, #0x0
- bne _02006018
- lsl r1, r6, #0x3
- add r2, r3, r1
- mov r0, #0x1
- str r0, [r2, #0x4]
- str r5, [r3, r1]
- b _02006020
-_02006018:
- add r6, r6, #0x1
- add r1, #0x8
- cmp r6, #0x8
- blt _02006006
-_02006020:
- cmp r6, #0x8
- blt _0200602C
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200602C:
- sub r6, r7, #0x1
- cmp r6, #0x1
- bhi _0200603C
- mov r0, #0x0
- mvn r0, r0
- blx FS_SetDefaultDMA
- str r0, [sp, #0x0]
-_0200603C:
- cmp r4, #0x0
- beq _0200604A
- cmp r4, #0x1
- beq _02006056
- cmp r4, #0x2
- beq _02006062
- b _0200606E
-_0200604A:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_02006168
- add r4, r0, #0x0
- b _02006076
-_02006056:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_02006170
- add r4, r0, #0x0
- b _02006076
-_02006062:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_020061A8
- add r4, r0, #0x0
- b _02006076
-_0200606E:
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_02006076:
- cmp r6, #0x1
- bhi _02006080
- ldr r0, [sp, #0x0]
- blx FS_SetDefaultDMA
-_02006080:
- cmp r4, #0x0
- bne _0200608C
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200608C:
- mov r0, #0x1
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02006090
-FUN_02006090: ; 0x02006090
- push {r3-r7, lr}
- sub sp, #0x10
- add r1, sp, #0xc
- add r2, sp, #0x8
- add r4, r0, #0x0
- bl FUN_02006130
- cmp r0, #0x0
- bne _020060A8
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_020060A8:
- add r0, r4, #0x0
- bl FUN_02005F90
- bl FUN_0200610C
- add r5, r0, #0x0
- mov r4, #0x0
- add r6, sp, #0x4
- add r7, sp, #0x0
-_020060BA:
- ldr r0, [r5, #0x4]
- cmp r0, #0x1
- bne _020060FC
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_02006130
- cmp r0, #0x1
- bne _020060FC
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0xc]
- cmp r2, r1
- blo _020060DC
- ldr r0, [sp, #0x0]
- cmp r2, r0
- blo _020060F2
-_020060DC:
- ldr r3, [sp, #0x8]
- cmp r3, r1
- bls _020060E8
- ldr r0, [sp, #0x0]
- cmp r3, r0
- bls _020060F2
-_020060E8:
- cmp r2, r1
- bhi _020060FC
- ldr r0, [sp, #0x0]
- cmp r3, r0
- blo _020060FC
-_020060F2:
- bl ErrorHandling
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_020060FC:
- add r4, r4, #0x1
- add r5, #0x8
- cmp r4, #0x8
- blt _020060BA
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200610C
-FUN_0200610C: ; 0x0200610C
- cmp r0, #0x0
- beq _02006118
- cmp r0, #0x1
- beq _0200611C
- cmp r0, #0x2
- beq _02006120
-_02006118:
- ldr r0, _02006124 ; =0x021C45B0
- bx lr
-_0200611C:
- ldr r0, _02006128 ; =0x021C45F0
- bx lr
-_02006120:
- ldr r0, _0200612C ; =0x021C4630
- bx lr
- .balign 4
-_02006124: .word 0x021C45B0
-_02006128: .word 0x021C45F0
-_0200612C: .word 0x021C4630
-
- thumb_func_start FUN_02006130
-FUN_02006130: ; 0x02006130
- push {r4-r5, lr}
- sub sp, #0x2c
- add r3, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- add r0, sp, #0x0
- mov r1, #0x0
- add r2, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _02006152
- bl ErrorHandling
- add sp, #0x2c
- mov r0, #0x0
- pop {r4-r5, pc}
-_02006152:
- ldr r2, [sp, #0x4]
- str r2, [r5, #0x0]
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- add r0, r1, r0
- add r0, r2, r0
- str r0, [r4, #0x0]
- mov r0, #0x1
- add sp, #0x2c
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006168
-FUN_02006168: ; 0x02006168
- ldr r3, _0200616C ; =FS_LoadOverlay
- bx r3
- .balign 4
-_0200616C: .word FS_LoadOverlay
-
- thumb_func_start FUN_02006170
-FUN_02006170: ; 0x02006170
- push {lr}
- sub sp, #0x2c
- add r3, r0, #0x0
- add r2, r1, #0x0
- add r0, sp, #0x0
- add r1, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _0200618A
- add sp, #0x2c
- mov r0, #0x0
- pop {pc}
-_0200618A:
- add r0, sp, #0x0
- blx FS_LoadOverlayImage
- cmp r0, #0x0
- bne _0200619A
- add sp, #0x2c
- mov r0, #0x0
- pop {pc}
-_0200619A:
- add r0, sp, #0x0
- blx FS_StartOverlay
- mov r0, #0x1
- add sp, #0x2c
- pop {pc}
- .balign 4
-
- thumb_func_start FUN_020061A8
-FUN_020061A8: ; 0x020061A8
- push {lr}
- sub sp, #0x74
- add r3, r0, #0x0
- add r2, r1, #0x0
- add r0, sp, #0x0
- add r1, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _020061C2
- add sp, #0x74
- mov r0, #0x0
- pop {pc}
-_020061C2:
- add r0, sp, #0x2c
- blx FS_InitFile
- add r0, sp, #0x0
- add r1, sp, #0x2c
- blx FS_LoadOverlayImageAsync
- add r0, sp, #0x2c
- blx FS_WaitAsync
- add r0, sp, #0x2c
- blx FS_CloseFile
- add r0, sp, #0x0
- blx FS_StartOverlay
- mov r0, #0x1
- add sp, #0x74
- pop {pc}
-
- thumb_func_start FUN_020061E8
-FUN_020061E8: ; 0x020061E8
- push {r3-r7, lr}
- add r5, r1, #0x0
- add r6, r0, #0x0
- add r7, r2, #0x0
- cmp r5, #0x0
- beq _0200620C
- add r0, r3, #0x0
- bl FUN_02016998
- add r4, r0, #0x0
- bne _02006202
- mov r0, #0x0
- pop {r3-r7, pc}
-_02006202:
- mov r1, #0x0
- add r2, r5, #0x0
- blx FUN_020DF4A4
- b _0200620E
-_0200620C:
- mov r4, #0x0
-_0200620E:
- add r0, r6, #0x0
- add r1, r4, #0x0
- add r2, r7, #0x0
- bl FUN_0200CA44
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200621C
-FUN_0200621C: ; 0x0200621C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_0201B6C8
- cmp r0, #0x0
- beq _0200622C
- bl FUN_02016A18
-_0200622C:
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r4, pc}
-
- thumb_func_start FUN_02006234
-FUN_02006234: ; 0x02006234
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x28
- bl FUN_02016998
- add r3, r0, #0x0
- add r2, r3, #0x0
- ldmia r5!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r2!, {r0-r1}
- mov r0, #0x0
- str r0, [r3, #0x10]
- str r0, [r3, #0x14]
- str r4, [r3, #0x18]
- str r0, [r3, #0x1c]
- str r0, [r3, #0x20]
- str r0, [r3, #0x24]
- add r0, r3, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02006260
-FUN_02006260: ; 0x02006260
- ldr r3, _02006264 ; =FUN_02016A18
- bx r3
- .balign 4
-_02006264: .word FUN_02016A18
-
- thumb_func_start FUN_02006268
-FUN_02006268: ; 0x02006268
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r2, #0x0
- bl FUN_02016998
- str r0, [r4, #0x1c]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02006278
-FUN_02006278: ; 0x02006278
- ldr r0, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_0200627C
-FUN_0200627C: ; 0x0200627C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x1c]
- bl FUN_02016A18
- mov r0, #0x0
- str r0, [r4, #0x1c]
- pop {r4, pc}
-
- thumb_func_start FUN_0200628C
-FUN_0200628C: ; 0x0200628C
- ldr r0, [r0, #0x18]
- bx lr
-
- thumb_func_start FUN_02006290
-FUN_02006290: ; 0x02006290
- push {r4, lr}
- add r4, r0, #0x0
- ldr r1, [r4, #0x10]
- cmp r1, #0x3
- bhi _0200630E
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_020062A6: ; jump table (using 16-bit offset)
- .short _020062AE - _020062A6 - 2; case 0
- .short _020062C2 - _020062A6 - 2; case 1
- .short _020062DA - _020062A6 - 2; case 2
- .short _020062F0 - _020062A6 - 2; case 3
-_020062AE:
- mov r1, #0x0
- ldr r0, [r4, #0xc]
- mvn r1, r1
- cmp r0, r1
- beq _020062BE
- mov r1, #0x2
- bl FUN_02005FDC
-_020062BE:
- mov r0, #0x1
- str r0, [r4, #0x10]
-_020062C2:
- add r1, r4, #0x0
- ldr r2, [r4, #0x0]
- add r0, r4, #0x0
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r0, #0x2
- str r0, [r4, #0x10]
- mov r0, #0x0
- str r0, [r4, #0x14]
- b _0200630E
-_020062DA:
- add r1, r4, #0x0
- ldr r2, [r4, #0x4]
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r0, #0x3
- str r0, [r4, #0x10]
- mov r0, #0x0
- str r0, [r4, #0x14]
- b _0200630E
-_020062F0:
- add r1, r4, #0x0
- ldr r2, [r4, #0x8]
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r1, #0x0
- ldr r0, [r4, #0xc]
- mvn r1, r1
- cmp r0, r1
- beq _0200630A
- bl FUN_02005F60
-_0200630A:
- mov r0, #0x1
- pop {r4, pc}
-_0200630E:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_020023C0
+FUN_020023C0: ; 0x020023C0
+ push {r3-r6, lr}
+ sub sp, #0xc
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ add r1, #0x24
+ ldrb r1, [r1, #0x0]
+ add r6, r4, #0x0
+ add r6, #0x1c
+ cmp r1, #0x6
+ bls _020023D6
+ b _02002838
+_020023D6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020023E2: ; jump table (using 16-bit offset)
+ .short _020023F0 - _020023E2 - 2; case 0
+ .short _02002742 - _020023E2 - 2; case 1
+ .short _0200275C - _020023E2 - 2; case 2
+ .short _02002786 - _020023E2 - 2; case 3
+ .short _020027B6 - _020023E2 - 2; case 4
+ .short _0200280C - _020023E2 - 2; case 5
+ .short _02002818 - _020023E2 - 2; case 6
+_020023F0:
+ ldr r0, _02002658 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #0x3
+ tst r0, r1
+ beq _02002402
+ ldrb r0, [r6, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ bne _02002414
+_02002402:
+ ldr r0, _0200265C ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0x0
+ beq _02002432
+ ldr r0, _02002660 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002432
+_02002414:
+ add r0, r4, #0x0
+ mov r1, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ beq _02002432
+ ldr r1, _02002660 ; =0x02106FC4
+ mov r0, #0x40
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+_02002432:
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0200248C
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ beq _0200248C
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x1
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ ldr r0, _02002660 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1f
+ beq _02002486
+ ldr r1, _02002658 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x3
+ tst r1, r2
+ bne _02002478
+ ldr r1, _0200265C ; =0x021C48F8
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0x0
+ beq _02002486
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002486
+_02002478:
+ ldrb r1, [r6, #0x0]
+ mov r0, #0x10
+ add r4, #0x26
+ orr r0, r1
+ strb r0, [r6, #0x0]
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+_02002486:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200248C:
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x19
+ add r0, r4, #0x0
+ add r0, #0x26
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ ldrh r5, [r0, #0x0]
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0xf1
+ lsl r0, r0, #0x8
+ cmp r5, r0
+ bne _020024B0
+ bl ErrorHandling
+_020024B0:
+ ldr r0, _02002664 ; =0x0000F0FD
+ cmp r5, r0
+ bgt _020024DA
+ bge _0200250E
+ ldr r1, _02002668 ; =0x000025BD
+ cmp r5, r1
+ bgt _020024D0
+ sub r0, r1, #0x1
+ cmp r5, r0
+ blt _020024CE
+ bne _020024C8
+ b _020026D8
+_020024C8:
+ cmp r5, r1
+ bne _020024CE
+ b _020026EC
+_020024CE:
+ b _02002700
+_020024D0:
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ cmp r5, r0
+ beq _020024F2
+ b _02002700
+_020024DA:
+ ldr r0, _0200266C ; =0x0000FFFE
+ cmp r5, r0
+ bgt _020024E4
+ beq _0200251A
+ b _02002700
+_020024E4:
+ add r0, r0, #0x1
+ cmp r5, r0
+ beq _020024EC
+ b _02002700
+_020024EC:
+ add sp, #0xc
+ mov r0, #0x1
+ pop {r3-r6, pc}
+_020024F2:
+ ldrb r0, [r4, #0xa]
+ mov r1, #0x1
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0x9]
+ bl FUN_02002E4C
+ ldrb r1, [r4, #0xf]
+ ldrb r2, [r4, #0xd]
+ add sp, #0xc
+ add r0, r1, r0
+ add r0, r2, r0
+ strb r0, [r4, #0xd]
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_0200250E:
+ ldr r0, [r4, #0x0]
+ add sp, #0xc
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_0200251A:
+ ldr r0, [r4, #0x0]
+ sub r0, r0, #0x2
+ str r0, [r4, #0x0]
+ bl FUN_0201B8E0
+ lsl r0, r0, #0x10
+ ldr r1, _02002670 ; =0x0000FE06
+ lsr r0, r0, #0x10
+ cmp r0, r1
+ bgt _02002552
+ blt _02002532
+ b _02002678
+_02002532:
+ mov r1, #0x2
+ lsl r1, r1, #0x8
+ sub r1, r0, r1
+ cmp r1, #0x4
+ bhi _0200255C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02002548: ; jump table (using 16-bit offset)
+ .short _020025B4 - _02002548 - 2; case 0
+ .short _020025DE - _02002548 - 2; case 1
+ .short _02002600 - _02002548 - 2; case 2
+ .short _02002618 - _02002548 - 2; case 3
+ .short _02002624 - _02002548 - 2; case 4
+_02002552:
+ mov r1, #0xff
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ bgt _0200255E
+ beq _02002566
+_0200255C:
+ b _020026CA
+_0200255E:
+ add r1, r1, #0x1
+ cmp r0, r1
+ beq _02002630
+ b _020026CA
+_02002566:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0xff
+ bne _02002596
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x17]
+ sub r1, r0, #0x1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #0x1
+ add r0, #0x64
+ strb r0, [r4, #0x17]
+ cmp r2, #0x64
+ blo _02002644
+ cmp r2, #0x6b
+ bhs _02002644
+ sub r2, #0x64
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ b _0200259E
+_02002596:
+ cmp r0, #0x64
+ blo _0200259E
+ strb r0, [r4, #0x17]
+ b _020026CA
+_0200259E:
+ lsl r1, r0, #0x1
+ add r0, r1, #0x1
+ strb r0, [r4, #0x11]
+ add r0, r1, #0x2
+ strb r0, [r4, #0x13]
+ ldrb r0, [r4, #0x11]
+ ldrb r1, [r4, #0x12]
+ ldrb r2, [r4, #0x13]
+ bl FUN_0201C05C
+ b _020026CA
+_020025B4:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ ldrb r1, [r4, #0xc]
+ ldrb r2, [r4, #0xd]
+ add r0, r4, #0x0
+ bl FUN_0201C1EC
+ add r0, r4, #0x0
+ add r0, #0x25
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ beq _020026CA
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ b _020026CA
+_020025DE:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ add r1, r4, #0x0
+ add r1, #0x26
+ strb r0, [r1, #0x0]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ mov r0, #0x6
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002600:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strh r0, [r4, #0x2a]
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002618:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strb r0, [r4, #0xc]
+ b _020026CA
+_02002624:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ strb r0, [r4, #0xd]
+ b _020026CA
+_02002630:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x64
+ beq _02002646
+ cmp r0, #0xc8
+ beq _0200264E
+_02002644:
+ b _020026CA
+_02002646:
+ mov r0, #0x0
+ strh r0, [r4, #0x14]
+ strb r0, [r4, #0x16]
+ b _020026CA
+_0200264E:
+ ldr r0, _02002674 ; =0x0000FFFC
+ strh r0, [r4, #0x14]
+ mov r0, #0x0
+ strb r0, [r4, #0x16]
+ b _020026CA
+ .balign 4
+_02002658: .word 0x021C48B8
+_0200265C: .word 0x021C48F8
+_02002660: .word 0x02106FC4
+_02002664: .word 0x0000F0FD
+_02002668: .word 0x000025BD
+_0200266C: .word 0x0000FFFE
+_02002670: .word 0x0000FE06
+_02002674: .word 0x0000FFFC
+_02002678:
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl FUN_0201B914
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ mov r0, #0xfe
+ lsl r0, r0, #0x8
+ cmp r1, r0
+ beq _020026AE
+ add r0, r0, #0x1
+ cmp r1, r0
+ bne _020026CA
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026AE:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026CA:
+ ldr r0, [r4, #0x0]
+ bl FUN_0201B8B8
+ str r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x2
+ pop {r3-r6, pc}
+_020026D8:
+ add r0, r4, #0x0
+ mov r1, #0x2
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020026EC:
+ add r0, r4, #0x0
+ mov r1, #0x3
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ bl FUN_0200284C
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002700:
+ ldrb r0, [r6, #0x0]
+ add r1, r5, #0x0
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bl FUN_02002D94
+ add r5, r0, #0x0
+ ldrb r0, [r4, #0xc]
+ add r2, r5, #0x0
+ add r3, r5, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0xd]
+ add r2, #0x80
+ add r3, #0x81
+ str r0, [sp, #0x4]
+ ldrh r0, [r4, #0x14]
+ add r1, r5, #0x0
+ str r0, [sp, #0x8]
+ ldrb r2, [r2, #0x0]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_0201974C
+ add r5, #0x80
+ ldrb r1, [r5, #0x0]
+ ldrb r0, [r4, #0xe]
+ ldrb r2, [r4, #0xc]
+ add sp, #0xc
+ add r0, r1, r0
+ add r0, r2, r0
+ strb r0, [r4, #0xc]
+ mov r0, #0x0
+ pop {r3-r6, pc}
+_02002742:
+ bl FUN_02002B3C
+ cmp r0, #0x0
+ beq _02002756
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002756:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200275C:
+ bl FUN_02002B18
+ cmp r0, #0x0
+ beq _02002780
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ ldrb r1, [r4, #0x12]
+ ldr r0, [r4, #0x4]
+ bl FUN_02019620
+ ldrb r0, [r4, #0xa]
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xb]
+ strb r0, [r4, #0xd]
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002780:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002786:
+ bl FUN_02002B18
+ cmp r0, #0x0
+ beq _020027B0
+ add r0, r4, #0x0
+ bl FUN_02002A00
+ ldrb r0, [r4, #0x9]
+ mov r1, #0x1
+ bl FUN_02002E4C
+ ldrb r1, [r4, #0xf]
+ add r1, r1, r0
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r1, [r0, #0x0]
+ ldrb r0, [r4, #0xa]
+ strb r0, [r4, #0xc]
+ mov r0, #0x4
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_020027B0:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_020027B6:
+ add r0, #0x27
+ ldrb r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _02002800
+ cmp r2, #0x4
+ ldrb r5, [r4, #0x12]
+ bge _020027D8
+ lsl r3, r5, #0x4
+ orr r3, r5
+ lsl r3, r3, #0x18
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ mov r1, #0x0
+ b _020027F2
+_020027D8:
+ lsl r3, r5, #0x4
+ orr r3, r5
+ lsl r3, r3, #0x18
+ ldr r0, [r4, #0x4]
+ mov r1, #0x0
+ mov r2, #0x4
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ add r0, r4, #0x0
+ add r0, #0x27
+ ldrb r0, [r0, #0x0]
+ sub r1, r0, #0x4
+_020027F2:
+ add r0, r4, #0x0
+ add r0, #0x27
+ strb r1, [r0, #0x0]
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ b _02002806
+_02002800:
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+_02002806:
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_0200280C:
+ mov r0, #0x0
+ add r4, #0x24
+ strb r0, [r4, #0x0]
+ add sp, #0xc
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002818:
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _0200282C
+ add r0, r4, #0x0
+ add r0, #0x26
+ ldrb r0, [r0, #0x0]
+ add r4, #0x26
+ sub r0, r0, #0x1
+ b _02002830
+_0200282C:
+ mov r0, #0x0
+ add r4, #0x24
+_02002830:
+ add sp, #0xc
+ strb r0, [r4, #0x0]
+ mov r0, #0x3
+ pop {r3-r6, pc}
+_02002838:
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002840
+FUN_02002840: ; 0x02002840
+ ldr r1, _02002848 ; =0x02106FC4
+ strh r0, [r1, #0x2]
+ bx lr
+ nop
+_02002848: .word 0x02106FC4
+
+ thumb_func_start FUN_0200284C
+FUN_0200284C: ; 0x0200284C
+ ldr r1, _02002874 ; =0x02106FC4
+ add r0, #0x1c
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002862
+ ldrb r2, [r0, #0x2]
+ mov r1, #0xff
+ bic r2, r1
+ strb r2, [r0, #0x2]
+ bx lr
+_02002862:
+ ldrb r2, [r0, #0x1]
+ mov r1, #0x60
+ bic r2, r1
+ strb r2, [r0, #0x1]
+ ldrb r2, [r0, #0x1]
+ mov r1, #0x1f
+ bic r2, r1
+ strb r2, [r0, #0x1]
+ bx lr
+ .balign 4
+_02002874: .word 0x02106FC4
+
+ thumb_func_start FUN_02002878
+FUN_02002878: ; 0x02002878
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0x0
+ ldr r0, _020029F8 ; =0x02106FC4
+ add r4, r5, #0x0
+ ldrb r0, [r0, #0x0]
+ add r4, #0x1c
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ beq _0200288E
+ b _020029F4
+_0200288E:
+ ldrb r0, [r4, #0x1]
+ lsl r1, r0, #0x1b
+ lsr r2, r1, #0x1b
+ beq _020028AC
+ mov r1, #0x1f
+ add r2, #0xff
+ bic r0, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x1f
+ and r1, r2
+ orr r0, r1
+ add sp, #0x2c
+ strb r0, [r4, #0x1]
+ pop {r4-r7, pc}
+_020028AC:
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB08
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB14
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB18
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB0C
+ ldr r1, _020029F8 ; =0x02106FC4
+ ldrh r6, [r1, #0x2]
+ ldr r1, [sp, #0x28]
+ add r7, r1, #0x2
+ ldr r1, [sp, #0x24]
+ add r2, r6, #0x0
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ add r2, #0x12
+ mov r12, r2
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ mov r3, r12
+ lsl r2, r2, #0x2
+ add r2, r3, r2
+ ldr r3, [sp, #0x18]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r0, #0x2
+ str r0, [sp, #0x10]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ add r7, r6, #0x0
+ ldr r0, [r5, #0x4]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ add r7, #0x13
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x10]
+ ldr r0, [r0, #0x0]
+ lsl r2, r2, #0x2
+ add r2, r7, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x28]
+ add r7, r6, #0x0
+ add r0, r0, #0x3
+ str r0, [sp, #0x14]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ add r7, #0x14
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x18]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x2
+ add r2, r7, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ add r6, #0x15
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0x1]
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ lsl r2, r2, #0x19
+ lsr r3, r2, #0x1e
+ ldr r2, _020029FC ; =0x020ECB50
+ ldr r0, [r0, #0x0]
+ ldrb r2, [r2, r3]
+ ldr r3, [sp, #0x10]
+ lsl r2, r2, #0x2
+ add r2, r6, r2
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+ ldrb r1, [r4, #0x1]
+ mov r0, #0x1f
+ bic r1, r0
+ mov r0, #0x8
+ orr r0, r1
+ strb r0, [r4, #0x1]
+ ldrb r2, [r4, #0x1]
+ mov r1, #0x60
+ add r0, r2, #0x0
+ bic r0, r1
+ lsl r1, r2, #0x19
+ lsr r1, r1, #0x1e
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x19
+ orr r0, r1
+ strb r0, [r4, #0x1]
+_020029F4:
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+_020029F8: .word 0x02106FC4
+_020029FC: .word 0x020ECB50
+
+ thumb_func_start FUN_02002A00
+FUN_02002A00: ; 0x02002A00
+ push {r3-r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB08
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB14
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB18
+ add r6, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_0201AB0C
+ ldr r1, _02002A90 ; =0x02106FC4
+ add r7, r6, #0x2
+ ldrh r4, [r1, #0x2]
+ ldr r1, [sp, #0x14]
+ add r6, r1, r0
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x4]
+ add r2, r4, #0x0
+ add r2, #0xa
+ add r3, r6, #0x1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x1
+ str r0, [sp, #0x4]
+ mov r0, #0x2
+ str r0, [sp, #0x8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x4]
+ add r4, #0xb
+ add r3, r6, #0x2
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #0x0]
+ ldr r1, [sp, #0x10]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldr r0, [r5, #0x4]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0, #0x0]
+ bl FUN_02017CD0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ nop
+_02002A90: .word 0x02106FC4
+
+ thumb_func_start FUN_02002A94
+FUN_02002A94: ; 0x02002A94
+ push {r3, lr}
+ ldr r0, _02002ACC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x3
+ tst r0, r1
+ bne _02002AB2
+ ldr r0, _02002AD0 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0x0
+ beq _02002AC6
+ ldr r0, _02002AD4 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ beq _02002AC6
+_02002AB2:
+ ldr r0, _02002AD8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _02002AD4 ; =0x02106FC4
+ mov r0, #0x80
+ ldrb r2, [r1, #0x0]
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ mov r0, #0x1
+ pop {r3, pc}
+_02002AC6:
+ mov r0, #0x0
+ pop {r3, pc}
+ nop
+_02002ACC: .word 0x021C48B8
+_02002AD0: .word 0x021C48F8
+_02002AD4: .word 0x02106FC4
+_02002AD8: .word 0x000005DC
+
+ thumb_func_start FUN_02002ADC
+FUN_02002ADC: ; 0x02002ADC
+ push {r4, lr}
+ add r2, r0, #0x0
+ add r2, #0x1c
+ ldrb r1, [r2, #0x2]
+ add r4, r1, #0x0
+ cmp r4, #0x64
+ bne _02002AEE
+ mov r0, #0x1
+ pop {r4, pc}
+_02002AEE:
+ mov r3, #0xff
+ bic r1, r3
+ add r3, r4, #0x1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ orr r1, r3
+ strb r1, [r2, #0x2]
+ ldr r1, _02002B14 ; =0x02106FC4
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1f
+ beq _02002B10
+ bl FUN_02002A94
+ pop {r4, pc}
+_02002B10:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+_02002B14: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B18
+FUN_02002B18: ; 0x02002B18
+ push {r4, lr}
+ ldr r1, _02002B38 ; =0x02106FC4
+ add r4, r0, #0x0
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002B2C
+ bl FUN_02002ADC
+ pop {r4, pc}
+_02002B2C:
+ bl FUN_02002878
+ add r0, r4, #0x0
+ bl FUN_02002A94
+ pop {r4, pc}
+ .balign 4
+_02002B38: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B3C
+FUN_02002B3C: ; 0x02002B3C
+ push {r3, lr}
+ ldr r1, _02002B5C ; =0x02106FC4
+ ldrb r1, [r1, #0x0]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1f
+ beq _02002B52
+ bl FUN_02002ADC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+_02002B52:
+ bl FUN_02002A94
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+ .balign 4
+_02002B5C: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B60
+FUN_02002B60: ; 0x02002B60
+ ldr r2, _02002B78 ; =0x02106FC4
+ mov r1, #0x1
+ ldrb r3, [r2, #0x0]
+ lsl r0, r0, #0x18
+ bic r3, r1
+ lsr r1, r0, #0x18
+ mov r0, #0x1
+ and r0, r1
+ orr r0, r3
+ strb r0, [r2, #0x0]
+ bx lr
+ nop
+_02002B78: .word 0x02106FC4
+
+ thumb_func_start FUN_02002B7C
+FUN_02002B7C: ; 0x02002B7C
+ push {r3-r4}
+ ldr r1, _02002BB4 ; =0x02106FC4
+ mov r3, #0x4
+ ldrb r2, [r1, #0x0]
+ mov r4, #0x1
+ bic r2, r3
+ add r3, r0, #0x0
+ and r3, r4
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ lsl r3, r3, #0x1f
+ lsr r3, r3, #0x1d
+ orr r2, r3
+ asr r0, r0, #0x1
+ and r0, r4
+ strb r2, [r1, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1f
+ ldrb r2, [r1, #0x0]
+ mov r3, #0x20
+ lsr r0, r0, #0x1a
+ bic r2, r3
+ orr r0, r2
+ strb r0, [r1, #0x0]
+ pop {r3-r4}
+ bx lr
+ nop
+_02002BB4: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BB8
+FUN_02002BB8: ; 0x02002BB8
+ ldr r2, _02002BD0 ; =0x02106FC4
+ lsl r0, r0, #0x18
+ ldrb r3, [r2, #0x0]
+ lsr r0, r0, #0x18
+ mov r1, #0x10
+ lsl r0, r0, #0x1f
+ bic r3, r1
+ lsr r0, r0, #0x1b
+ orr r0, r3
+ strb r0, [r2, #0x0]
+ bx lr
+ nop
+_02002BD0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BD4
+FUN_02002BD4: ; 0x02002BD4
+ ldr r0, _02002BE0 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1f
+ bx lr
+ nop
+_02002BE0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BE4
+FUN_02002BE4: ; 0x02002BE4
+ ldr r1, _02002BF0 ; =0x02106FC4
+ mov r0, #0x40
+ ldrb r2, [r1, #0x0]
+ bic r2, r0
+ strb r2, [r1, #0x0]
+ bx lr
+ .balign 4
+_02002BF0: .word 0x02106FC4
+
+ thumb_func_start FUN_02002BF4
+FUN_02002BF4: ; 0x02002BF4
+ ldr r0, _02002C00 ; =0x02106FC4
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+ nop
+_02002C00: .word 0x02106FC4
+
+ thumb_func_start FUN_02002C04
+FUN_02002C04: ; 0x02002C04
+ ldr r1, _02002C10 ; =0x02106FC4
+ mov r0, #0x80
+ ldrb r2, [r1, #0x0]
+ bic r2, r0
+ strb r2, [r1, #0x0]
+ bx lr
+ .balign 4
+_02002C10: .word 0x02106FC4
+
+ thumb_func_start FUN_02002C14
+FUN_02002C14: ; 0x02002C14
+ push {r4, lr}
+ ldr r0, _02002C44 ; =0x02106FCC
+ ldr r4, _02002C48 ; =0x02106FC8
+ mov r1, #0x0
+ str r0, [r4, #0x0]
+ add r2, r1, #0x0
+ add r0, r1, #0x0
+_02002C22:
+ ldr r3, [r4, #0x0]
+ add r1, r1, #0x1
+ add r3, r3, r2
+ add r3, #0x84
+ str r0, [r3, #0x0]
+ ldr r3, [r4, #0x0]
+ add r3, r3, r2
+ add r3, #0x94
+ add r2, r2, #0x4
+ str r0, [r3, #0x0]
+ cmp r1, #0x4
+ blo _02002C22
+ ldr r0, _02002C4C ; =0x020ECB64
+ bl FUN_0201BCBC
+ pop {r4, pc}
+ nop
+_02002C44: .word 0x02106FCC
+_02002C48: .word 0x02106FC8
+_02002C4C: .word 0x020ECB64
+
+ thumb_func_start FUN_02002C50
+FUN_02002C50: ; 0x02002C50
+ push {r3-r4, lr}
+ sub sp, #0x4
+ str r1, [sp, #0x0]
+ lsl r4, r0, #0x2
+ ldr r1, _02002C78 ; =0x020ECB54
+ ldr r3, _02002C7C ; =0x020ECB56
+ ldrh r1, [r1, r4]
+ ldrh r3, [r3, r4]
+ mov r0, #0xe
+ mov r2, #0x1
+ bl FUN_02021590
+ ldr r1, _02002C80 ; =0x02106FC8
+ ldr r1, [r1, #0x0]
+ add r1, r1, r4
+ add r1, #0x94
+ str r0, [r1, #0x0]
+ add sp, #0x4
+ pop {r3-r4, pc}
+ nop
+_02002C78: .word 0x020ECB54
+_02002C7C: .word 0x020ECB56
+_02002C80: .word 0x02106FC8
+
+ thumb_func_start FUN_02002C84
+FUN_02002C84: ; 0x02002C84
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ cmp r4, #0x4
+ blt _02002C92
+ bl ErrorHandling
+_02002C92:
+ ldr r0, _02002CBC ; =0x02106FC8
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002CA6
+ bl ErrorHandling
+_02002CA6:
+ ldr r0, _02002CBC ; =0x02106FC8
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r5, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020215E0
+ pop {r3-r5, pc}
+ nop
+_02002CBC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002CC0
+FUN_02002CC0: ; 0x02002CC0
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ blt _02002CCC
+ bl ErrorHandling
+_02002CCC:
+ ldr r0, _02002CF4 ; =0x02106FC8
+ lsl r4, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002CE0
+ bl ErrorHandling
+_02002CE0:
+ ldr r0, _02002CF4 ; =0x02106FC8
+ mov r1, #0x1
+ ldr r0, [r0, #0x0]
+ mov r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020215E0
+ pop {r4, pc}
+ .balign 4
+_02002CF4: .word 0x02106FC8
+
+ thumb_func_start FUN_02002CF8
+FUN_02002CF8: ; 0x02002CF8
+ push {r3-r7, lr}
+ add r4, r0, #0x0
+ cmp r4, #0x4
+ blt _02002D04
+ bl ErrorHandling
+_02002D04:
+ ldr r0, _02002D8C ; =0x02106FC8
+ lsl r6, r4, #0x2
+ ldr r7, [r0, #0x0]
+ add r0, r7, r6
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ mov r12, r0
+ cmp r0, #0x0
+ beq _02002D68
+ ldr r2, _02002D90 ; =0x020ECB54
+ mov r1, #0x0
+ ldrh r0, [r2, r6]
+ add r3, r7, #0x0
+_02002D1E:
+ cmp r1, r4
+ beq _02002D3E
+ ldrh r5, [r2, #0x0]
+ cmp r5, r0
+ bne _02002D3E
+ add r5, r3, #0x0
+ add r5, #0x94
+ ldr r5, [r5, #0x0]
+ cmp r5, #0x0
+ beq _02002D3E
+ lsl r0, r1, #0x2
+ add r2, r7, r0
+ add r2, #0x84
+ mov r0, r12
+ str r0, [r2, #0x0]
+ b _02002D48
+_02002D3E:
+ add r1, r1, #0x1
+ add r2, r2, #0x4
+ add r3, r3, #0x4
+ cmp r1, #0x4
+ blo _02002D1E
+_02002D48:
+ cmp r1, #0x4
+ bne _02002D68
+ ldr r0, _02002D8C ; =0x02106FC8
+ lsl r5, r4, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0x84
+ ldr r0, [r0, #0x0]
+ bl FUN_02016A18
+ ldr r0, _02002D8C ; =0x02106FC8
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r5
+ add r0, #0x84
+ str r1, [r0, #0x0]
+_02002D68:
+ ldr r0, _02002D8C ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ add r0, r0, r6
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _02002D88
+ bl FUN_020215C8
+ ldr r0, _02002D8C ; =0x02106FC8
+ mov r2, #0x0
+ ldr r1, [r0, #0x0]
+ lsl r0, r4, #0x2
+ add r0, r1, r0
+ add r0, #0x94
+ str r2, [r0, #0x0]
+_02002D88:
+ pop {r3-r7, pc}
+ nop
+_02002D8C: .word 0x02106FC8
+_02002D90: .word 0x020ECB54
+
+ thumb_func_start FUN_02002D94
+FUN_02002D94: ; 0x02002D94
+ push {r3, lr}
+ ldr r2, _02002DAC ; =0x02106FC8
+ lsl r0, r0, #0x2
+ ldr r2, [r2, #0x0]
+ add r0, r2, r0
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02021750
+ ldr r0, _02002DAC ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+_02002DAC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002DB0
+FUN_02002DB0: ; 0x02002DB0
+ push {r4, lr}
+ add r3, r1, #0x0
+ add r3, #0x1c
+ ldrb r2, [r3, #0x1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1f
+ bne _02002DD8
+ ldrb r2, [r3, #0x0]
+ mov r4, #0xf
+ lsl r0, r0, #0x18
+ bic r2, r4
+ lsr r4, r0, #0x18
+ mov r0, #0xf
+ and r0, r4
+ orr r0, r2
+ strb r0, [r3, #0x0]
+ ldrb r2, [r3, #0x1]
+ mov r0, #0x80
+ orr r0, r2
+ strb r0, [r3, #0x1]
+_02002DD8:
+ add r0, r1, #0x0
+ bl FUN_020023C0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002DE0
+FUN_02002DE0: ; 0x02002DE0
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002E10 ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002DFA
+ bl ErrorHandling
+_02002DFA:
+ ldr r0, _02002E10 ; =0x02106FC8
+ add r1, r5, #0x0
+ ldr r0, [r0, #0x0]
+ add r2, r6, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020218D8
+ pop {r4-r6, pc}
+ nop
+_02002E10: .word 0x02106FC8
+
+ thumb_func_start FUN_02002E14
+FUN_02002E14: ; 0x02002E14
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002E48 ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002E2E
+ bl ErrorHandling
+_02002E2E:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002E48 ; =0x02106FC8
+ add r2, r6, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_020218D8
+ pop {r4-r6, pc}
+ .balign 4
+_02002E48: .word 0x02106FC8
+
+ thumb_func_start FUN_02002E4C
+FUN_02002E4C: ; 0x02002E4C
+ mov r2, #0x0
+ cmp r1, #0x7
+ bhi _02002EAC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02002E5E: ; jump table (using 16-bit offset)
+ .short _02002E6E - _02002E5E - 2; case 0
+ .short _02002E76 - _02002E5E - 2; case 1
+ .short _02002E7E - _02002E5E - 2; case 2
+ .short _02002E86 - _02002E5E - 2; case 3
+ .short _02002E8E - _02002E5E - 2; case 4
+ .short _02002E96 - _02002E5E - 2; case 5
+ .short _02002E9E - _02002E5E - 2; case 6
+ .short _02002EA6 - _02002E5E - 2; case 7
+_02002E6E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB0 ; =0x020ECB64
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E76:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB4 ; =0x020ECB65
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E7E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EB8 ; =0x020ECB66
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E86:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EBC ; =0x020ECB67
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E8E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC0 ; =0x020ECB68
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E96:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC4 ; =0x020ECB69
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002E9E:
+ lsl r1, r0, #0x3
+ ldr r0, _02002EC8 ; =0x020ECB6A
+ ldrb r2, [r0, r1]
+ b _02002EAC
+_02002EA6:
+ lsl r1, r0, #0x3
+ ldr r0, _02002ECC ; =0x020ECB6B
+ ldrb r2, [r0, r1]
+_02002EAC:
+ add r0, r2, #0x0
+ bx lr
+ .balign 4
+_02002EB0: .word 0x020ECB64
+_02002EB4: .word 0x020ECB65
+_02002EB8: .word 0x020ECB66
+_02002EBC: .word 0x020ECB67
+_02002EC0: .word 0x020ECB68
+_02002EC4: .word 0x020ECB69
+_02002EC8: .word 0x020ECB6A
+_02002ECC: .word 0x020ECB6B
+
+ thumb_func_start FUN_02002ED0
+FUN_02002ED0: ; 0x02002ED0
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ add r3, r1, #0x0
+ str r2, [sp, #0x4]
+ mov r0, #0xe
+ mov r1, #0x6
+ add r2, r4, #0x0
+ bl FUN_02006930
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002EEC
+FUN_02002EEC: ; 0x02002EEC
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x20
+ str r0, [sp, #0x0]
+ add r3, r1, #0x0
+ str r2, [sp, #0x4]
+ mov r0, #0xe
+ mov r1, #0x7
+ add r2, r4, #0x0
+ bl FUN_02006930
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02002F08
+FUN_02002F08: ; 0x02002F08
+ push {r4-r6, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002F3C ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r6, r2, #0x0
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002F22
+ bl ErrorHandling
+_02002F22:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002F3C ; =0x02106FC8
+ add r2, r6, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_02021934
+ pop {r4-r6, pc}
+ .balign 4
+_02002F3C: .word 0x02106FC8
+
+ thumb_func_start FUN_02002F40
+FUN_02002F40: ; 0x02002F40
+ push {r4, lr}
+ add r4, r3, #0x0
+ bl FUN_02002E14
+ cmp r0, r4
+ bhs _02002F52
+ sub r0, r4, r0
+ lsr r0, r0, #0x1
+ pop {r4, pc}
+_02002F52:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002F58
+FUN_02002F58: ; 0x02002F58
+ push {r3-r7, lr}
+ ldrh r2, [r0, #0x0]
+ ldr r1, _02002F8C ; =0x0000FFFF
+ mov r5, #0x1
+ cmp r2, r1
+ beq _02002F88
+ mov r6, #0xe
+ lsl r6, r6, #0xc
+ add r7, r1, #0x0
+ sub r4, r1, #0x1
+_02002F6C:
+ cmp r2, r4
+ bne _02002F76
+ bl FUN_0201B8B8
+ b _02002F82
+_02002F76:
+ cmp r2, r6
+ bne _02002F80
+ add r5, r5, #0x1
+ add r0, r0, #0x2
+ b _02002F82
+_02002F80:
+ add r0, r0, #0x2
+_02002F82:
+ ldrh r2, [r0, #0x0]
+ cmp r2, r7
+ bne _02002F6C
+_02002F88:
+ add r0, r5, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+_02002F8C: .word 0x0000FFFF
+
+ thumb_func_start FUN_02002F90
+FUN_02002F90: ; 0x02002F90
+ push {r3, lr}
+ bl FUN_02021F2C
+ bl FUN_02002F58
+ pop {r3, pc}
+
+ thumb_func_start FUN_02002F9C
+FUN_02002F9C: ; 0x02002F9C
+ push {r3-r5, lr}
+ lsl r4, r0, #0x2
+ ldr r0, _02002FCC ; =0x02106FC8
+ add r5, r1, #0x0
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02002FB4
+ bl ErrorHandling
+_02002FB4:
+ add r0, r5, #0x0
+ bl FUN_02021F2C
+ add r1, r0, #0x0
+ ldr r0, _02002FCC ; =0x02106FC8
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ add r0, #0x94
+ ldr r0, [r0, #0x0]
+ bl FUN_0202199C
+ pop {r3-r5, pc}
+ .balign 4
+_02002FCC: .word 0x02106FC8
+
+ thumb_func_start FUN_02002FD0
+FUN_02002FD0: ; 0x02002FD0
+ push {r4, lr}
+ mov r1, #0x12
+ lsl r1, r1, #0x4
+ bl FUN_02016998
+ mov r2, #0x12
+ mov r1, #0x0
+ lsl r2, r2, #0x4
+ add r4, r0, #0x0
+ blx MI_CpuFill8
+ add r0, r4, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02002FEC
+FUN_02002FEC: ; 0x02002FEC
+ ldr r3, _02002FF0 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02002FF0: .word FUN_02016A18
+
+ thumb_func_start FUN_02002FF4
+FUN_02002FF4: ; 0x02002FF4
+ push {r3-r4}
+ mov r4, #0x14
+ mul r4, r1
+ str r2, [r0, r4]
+ add r1, r0, r4
+ ldr r0, [sp, #0x8]
+ str r3, [r1, #0x4]
+ str r0, [r1, #0x8]
+ pop {r3-r4}
+ bx lr
+
+ thumb_func_start FUN_02003008
+FUN_02003008: ; 0x02003008
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ str r3, [sp, #0x4]
+ add r0, r3, #0x0
+ add r1, r4, #0x0
+ bl FUN_02016998
+ add r7, r0, #0x0
+ ldr r0, [sp, #0x4]
+ add r1, r4, #0x0
+ bl FUN_02016998
+ add r3, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ str r4, [sp, #0x0]
+ bl FUN_02002FF4
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003038
+FUN_02003038: ; 0x02003038
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r5, r1, #0x0
+ mul r5, r0
+ ldr r0, [r4, r5]
+ bl FUN_02016A18
+ add r0, r4, r5
+ ldr r0, [r0, #0x4]
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003054
+FUN_02003054: ; 0x02003054
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r0, sp, #0x8
+ ldrh r7, [r0, #0x10]
+ add r6, r2, #0x0
+ mov r0, #0x14
+ mul r6, r0
+ str r1, [sp, #0x0]
+ add r0, r1, #0x0
+ ldr r1, [r5, r6]
+ lsl r4, r3, #0x1
+ add r1, r1, r4
+ add r2, r7, #0x0
+ blx MIi_CpuCopy16
+ add r1, r5, r6
+ ldr r1, [r1, #0x4]
+ ldr r0, [sp, #0x0]
+ add r1, r1, r4
+ add r2, r7, #0x0
+ blx MIi_CpuCopy16
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003084
+FUN_02003084: ; 0x02003084
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, sp, #0x4
+ ldr r4, [sp, #0x1c]
+ bl FUN_02006C08
+ add r6, r0, #0x0
+ bne _0200309E
+ bl ErrorHandling
+_0200309E:
+ cmp r4, #0x0
+ bne _020030A6
+ ldr r0, [sp, #0x4]
+ ldr r4, [r0, #0x8]
+_020030A6:
+ add r0, sp, #0x8
+ ldrh r0, [r0, #0x18]
+ ldr r2, [sp, #0x18]
+ mov r1, #0x14
+ mul r1, r2
+ add r1, r5, r1
+ lsl r0, r0, #0x1
+ ldr r1, [r1, #0x8]
+ add r0, r4, r0
+ cmp r0, r1
+ bls _020030C0
+ bl ErrorHandling
+_020030C0:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r3, sp, #0x8
+ ldr r2, [r1, #0xc]
+ ldrh r1, [r3, #0x1c]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0x0
+ lsl r1, r1, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x18]
+ bl FUN_02003054
+ add r0, r6, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020030E8
+FUN_020030E8: ; 0x020030E8
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x4]
+ add r4, sp, #0x8
+ ldrh r4, [r4, #0x18]
+ str r4, [sp, #0x8]
+ mov r4, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_02003084
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003108
+FUN_02003108: ; 0x02003108
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x14
+ add r6, r0, #0x0
+ mul r1, r4
+ add r5, r2, #0x0
+ add r1, r6, r1
+ add r7, r3, #0x0
+ lsl r0, r5, #0x1
+ ldr r1, [r1, #0x8]
+ add r0, r7, r0
+ cmp r0, r1
+ bls _02003126
+ bl ErrorHandling
+_02003126:
+ cmp r4, #0x3
+ bhi _0200315E
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02003136: ; jump table (using 16-bit offset)
+ .short _0200313E - _02003136 - 2; case 0
+ .short _02003146 - _02003136 - 2; case 1
+ .short _0200314E - _02003136 - 2; case 2
+ .short _02003156 - _02003136 - 2; case 3
+_0200313E:
+ bl FUN_020222E8
+ add r1, r0, #0x0
+ b _02003164
+_02003146:
+ bl FUN_020222F8
+ add r1, r0, #0x0
+ b _02003164
+_0200314E:
+ bl FUN_02022308
+ add r1, r0, #0x0
+ b _02003164
+_02003156:
+ bl FUN_02022310
+ add r1, r0, #0x0
+ b _02003164
+_0200315E:
+ bl ErrorHandling
+ pop {r3-r7, pc}
+_02003164:
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ lsl r2, r5, #0x1
+ str r0, [sp, #0x0]
+ add r1, r1, r2
+ add r0, r6, #0x0
+ add r2, r4, #0x0
+ add r3, r5, #0x0
+ bl FUN_02003054
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200317C
+FUN_0200317C: ; 0x0200317C
+ push {r3-r5, lr}
+ add r4, r2, #0x0
+ add r5, r3, #0x0
+ add r2, sp, #0x0
+ add r3, r4, #0x0
+ bl FUN_02006C08
+ add r4, r0, #0x0
+ bne _02003192
+ bl ErrorHandling
+_02003192:
+ cmp r5, #0x0
+ bne _0200319A
+ ldr r0, [sp, #0x0]
+ ldr r5, [r0, #0x8]
+_0200319A:
+ ldr r0, [sp, #0x0]
+ add r2, r5, #0x0
+ ldr r1, [r0, #0xc]
+ add r0, sp, #0x0
+ ldrh r0, [r0, #0x10]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ ldr r1, [sp, #0x14]
+ blx MIi_CpuCopy16
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020031B8
+FUN_020031B8: ; 0x020031B8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, sp, #0x10
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ ldrh r1, [r4, #0x14]
+ add r6, r3, #0x0
+ str r1, [sp, #0x0]
+ ldrh r1, [r4, #0x10]
+ lsl r4, r2, #0x1
+ ldr r2, [sp, #0x0]
+ lsl r7, r1, #0x1
+ mov r1, #0x14
+ mul r6, r1
+ mul r1, r0
+ ldr r0, [r5, r1]
+ str r1, [sp, #0x4]
+ ldr r1, [r5, r6]
+ add r0, r0, r4
+ add r1, r1, r7
+ blx MIi_CpuCopy16
+ ldr r0, [sp, #0x4]
+ add r1, r5, r6
+ ldr r0, [r5, r0]
+ ldr r1, [r1, #0x4]
+ ldr r2, [sp, #0x0]
+ add r0, r0, r4
+ add r1, r1, r7
+ blx MIi_CpuCopy16
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020031FC
+FUN_020031FC: ; 0x020031FC
+ mov r2, #0x14
+ mul r2, r1
+ ldr r0, [r0, r2]
+ bx lr
+
+ thumb_func_start FUN_02003204
+FUN_02003204: ; 0x02003204
+ mov r2, #0x14
+ mul r2, r1
+ add r0, r0, r2
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02003210
+FUN_02003210: ; 0x02003210
+ push {r0-r3}
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r3, [sp, #0x8]
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x38]
+ mov r6, #0x0
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x3c]
+ add r7, r1, #0x0
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x40]
+ add r4, r6, #0x0
+ str r0, [sp, #0x40]
+ add r0, sp, #0x28
+ ldrh r0, [r0, #0x8]
+ str r0, [sp, #0xc]
+_02003232:
+ add r0, r7, #0x0
+ add r1, r4, #0x0
+ bl FUN_02003314
+ cmp r0, #0x1
+ bne _020032A6
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r0, [r5, r0]
+ add r1, r4, #0x0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x0
+ bne _020032A6
+ mov r0, #0x14
+ add r6, r4, #0x0
+ mul r6, r0
+ add r0, r4, #0x0
+ add r1, r5, r6
+ add r2, sp, #0x30
+ bl FUN_02003368
+ ldr r0, [sp, #0x3c]
+ add r1, sp, #0x28
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #0x4]
+ add r0, r5, r6
+ ldrh r1, [r1, #0x8]
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0x38]
+ add r0, #0xc
+ bl FUN_020033A4
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02003328
+ cmp r4, #0x4
+ blo _02003294
+ mov r2, #0x1
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ lsl r2, r2, #0x8
+ bl FUN_0200359C
+ b _0200329E
+_02003294:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ mov r2, #0x10
+ bl FUN_0200359C
+_0200329E:
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0x28
+ strh r1, [r0, #0x8]
+ mov r6, #0x1
+_020032A6:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xe
+ blo _02003232
+ cmp r6, #0x1
+ bne _02003300
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r2, [r5, r0]
+ ldr r1, _0200330C ; =0xFFFF0003
+ and r1, r2
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x12
+ orr r2, r7
+ lsl r2, r2, #0x12
+ lsr r2, r2, #0x10
+ orr r1, r2
+ strh r1, [r5, r0]
+ add r1, r0, #0x2
+ ldrh r1, [r5, r1]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1f
+ bne _02003300
+ add r1, r0, #0x2
+ ldrh r2, [r5, r1]
+ mov r1, #0x1
+ lsl r1, r1, #0xe
+ orr r2, r1
+ add r1, r0, #0x2
+ strh r2, [r5, r1]
+ ldrh r2, [r5, r0]
+ mov r1, #0x3
+ bic r2, r1
+ mov r1, #0x1
+ orr r1, r2
+ strh r1, [r5, r0]
+ mov r2, #0x0
+ add r0, r0, #0x4
+ strb r2, [r5, r0]
+ ldr r0, _02003310 ; =FUN_02003464
+ add r1, r5, #0x0
+ sub r2, r2, #0x2
+ bl FUN_0200CA44
+_02003300:
+ add r0, r6, #0x0
+ add sp, #0x10
+ pop {r3-r7}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .balign 4
+_0200330C: .word 0xFFFF0003
+_02003310: .word FUN_02003464
+
+ thumb_func_start FUN_02003314
+FUN_02003314: ; 0x02003314
+ mov r3, #0x1
+ add r2, r3, #0x0
+ lsl r2, r1
+ tst r0, r2
+ bne _02003320
+ mov r3, #0x0
+_02003320:
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02003328
+FUN_02003328: ; 0x02003328
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ ldr r0, _02003360 ; =0x0000011A
+ add r4, r1, #0x0
+ ldrh r0, [r5, r0]
+ lsl r0, r0, #0x12
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x1
+ beq _0200335E
+ ldr r3, _02003360 ; =0x0000011A
+ ldr r1, _02003364 ; =0xFFFFC000
+ ldrh r2, [r5, r3]
+ add r0, r2, #0x0
+ lsl r2, r2, #0x12
+ lsr r6, r2, #0x12
+ mov r2, #0x1
+ lsl r2, r4
+ orr r2, r6
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsr r2, r2, #0x10
+ lsr r1, r1, #0x12
+ and r1, r2
+ orr r0, r1
+ strh r0, [r5, r3]
+_0200335E:
+ pop {r4-r6, pc}
+ .balign 4
+_02003360: .word 0x0000011A
+_02003364: .word 0xFFFFC000
+
+ thumb_func_start FUN_02003368
+FUN_02003368: ; 0x02003368
+ push {r4-r5}
+ cmp r0, #0x4
+ ldr r0, [r1, #0x8]
+ bge _02003374
+ lsl r0, r0, #0x13
+ b _02003378
+_02003374:
+ lsr r0, r0, #0x9
+ lsl r0, r0, #0x18
+_02003378:
+ mov r4, #0x0
+ lsr r0, r0, #0x18
+ add r5, r4, #0x0
+ cmp r0, #0x0
+ bls _02003398
+ mov r3, #0x1
+_02003384:
+ add r1, r3, #0x0
+ lsl r1, r5
+ add r1, r4, r1
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ add r1, r5, #0x1
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ cmp r5, r0
+ blo _02003384
+_02003398:
+ ldrh r0, [r2, #0x0]
+ and r0, r4
+ strh r0, [r2, #0x0]
+ pop {r4-r5}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_020033A4
+FUN_020033A4: ; 0x020033A4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r3, #0x0
+ cmp r2, #0x0
+ bge _020033D4
+ add r0, r2, #0x0
+ blx FUN_020DE3F0
+ add r0, r0, #0x2
+ ldrh r1, [r5, #0x6]
+ mov r2, #0xf
+ lsl r0, r0, #0x10
+ bic r1, r2
+ lsr r2, r0, #0x10
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r1
+ strh r0, [r5, #0x6]
+ ldrh r1, [r5, #0x2]
+ mov r0, #0x3f
+ bic r1, r0
+ strh r1, [r5, #0x2]
+ b _020033F2
+_020033D4:
+ ldrh r1, [r5, #0x6]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #0x2
+ orr r0, r1
+ strh r0, [r5, #0x6]
+ ldrh r0, [r5, #0x2]
+ mov r1, #0x3f
+ bic r0, r1
+ lsl r1, r2, #0x10
+ lsr r2, r1, #0x10
+ mov r1, #0x3f
+ and r1, r2
+ orr r0, r1
+ strh r0, [r5, #0x2]
+_020033F2:
+ strh r6, [r5, #0x0]
+ ldrh r1, [r5, #0x2]
+ ldr r0, _02003454 ; =0xFFFFF83F
+ add r3, sp, #0x0
+ and r1, r0
+ lsl r0, r4, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r5, #0x2]
+ ldrh r1, [r5, #0x2]
+ ldr r0, _02003458 ; =0xFFFF07FF
+ add r2, r1, #0x0
+ ldrb r1, [r3, #0x10]
+ and r2, r0
+ lsl r0, r1, #0x1b
+ lsr r0, r0, #0x10
+ orr r0, r2
+ strh r0, [r5, #0x2]
+ ldrh r0, [r5, #0x4]
+ ldr r2, _0200345C ; =0xFFFF8000
+ ldrh r6, [r3, #0x14]
+ lsr r3, r2, #0x11
+ and r0, r2
+ and r3, r6
+ orr r0, r3
+ strh r0, [r5, #0x4]
+ ldrh r3, [r5, #0x6]
+ ldr r0, _02003460 ; =0xFFFFFC0F
+ and r0, r3
+ ldrh r3, [r5, #0x2]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1a
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x16
+ orr r0, r3
+ strh r0, [r5, #0x6]
+ cmp r4, r1
+ ldrh r1, [r5, #0x4]
+ bhs _02003448
+ sub r0, r2, #0x1
+ and r0, r1
+ strh r0, [r5, #0x4]
+ pop {r4-r6, pc}
+_02003448:
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ orr r0, r1
+ strh r0, [r5, #0x4]
+ pop {r4-r6, pc}
+ nop
+_02003454: .word 0xFFFFF83F
+_02003458: .word 0xFFFF07FF
+_0200345C: .word 0xFFFF8000
+_02003460: .word 0xFFFFFC0F
+
+ thumb_func_start FUN_02003464
+FUN_02003464: ; 0x02003464
+ push {r4-r6, lr}
+ add r4, r1, #0x0
+ mov r1, #0x47
+ lsl r1, r1, #0x2
+ ldrb r2, [r4, r1]
+ add r5, r0, #0x0
+ cmp r2, #0x1
+ bne _020034A4
+ mov r2, #0x0
+ strb r2, [r4, r1]
+ sub r2, r1, #0x2
+ ldrh r3, [r4, r2]
+ ldr r2, _020034F4 ; =0xFFFFC000
+ add r5, r3, #0x0
+ and r5, r2
+ sub r3, r1, #0x2
+ strh r5, [r4, r3]
+ sub r3, r1, #0x4
+ ldrh r5, [r4, r3]
+ ldr r3, _020034F8 ; =0xFFFF0003
+ sub r2, r2, #0x1
+ and r5, r3
+ sub r3, r1, #0x4
+ strh r5, [r4, r3]
+ sub r3, r1, #0x2
+ ldrh r3, [r4, r3]
+ sub r1, r1, #0x2
+ and r2, r3
+ strh r2, [r4, r1]
+ bl FUN_0200CAB4
+ pop {r4-r6, pc}
+_020034A4:
+ sub r0, r1, #0x4
+ ldrh r2, [r4, r0]
+ lsl r0, r2, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #0x1
+ bne _020034F0
+ sub r0, r1, #0x2
+ ldrh r0, [r4, r0]
+ ldr r3, _020034F4 ; =0xFFFFC000
+ lsl r2, r2, #0x10
+ lsr r6, r2, #0x12
+ lsr r2, r3, #0x12
+ and r0, r3
+ and r2, r6
+ orr r2, r0
+ sub r0, r1, #0x2
+ strh r2, [r4, r0]
+ add r0, r4, #0x0
+ bl FUN_02003500
+ add r0, r4, #0x0
+ bl FUN_02003520
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ ldrh r0, [r4, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bne _020034F0
+ add r0, r1, #0x2
+ ldrh r2, [r4, r0]
+ ldr r0, _020034FC ; =0xFFFFBFFF
+ and r2, r0
+ add r0, r1, #0x2
+ strh r2, [r4, r0]
+ add r0, r5, #0x0
+ bl FUN_0200CAB4
+_020034F0:
+ pop {r4-r6, pc}
+ nop
+_020034F4: .word 0xFFFFC000
+_020034F8: .word 0xFFFF0003
+_020034FC: .word 0xFFFFBFFF
+
+ thumb_func_start FUN_02003500
+FUN_02003500: ; 0x02003500
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r4, #0x0
+ mov r6, #0x10
+_02003508:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02003540
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ blo _02003508
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003520
+FUN_02003520: ; 0x02003520
+ push {r4-r6, lr}
+ mov r4, #0x4
+ add r6, r4, #0x0
+ add r5, r0, #0x0
+ add r6, #0xfc
+_0200352A:
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02003540
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xe
+ blo _0200352A
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02003540
+FUN_02003540: ; 0x02003540
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0x46
+ lsl r0, r0, #0x2
+ ldrh r0, [r5, r0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _02003594
+ mov r0, #0x14
+ mul r0, r4
+ add r2, r5, r0
+ ldrh r0, [r2, #0x12]
+ ldrh r3, [r2, #0xe]
+ lsl r1, r0, #0x16
+ lsl r3, r3, #0x1a
+ lsr r1, r1, #0x1a
+ lsr r3, r3, #0x1a
+ cmp r1, r3
+ bhs _02003584
+ ldr r3, _02003598 ; =0xFFFFFC0F
+ and r3, r0
+ add r0, r1, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x16
+ orr r0, r3
+ strh r0, [r2, #0x12]
+ pop {r4-r6, pc}
+_02003584:
+ ldr r1, _02003598 ; =0xFFFFFC0F
+ and r0, r1
+ strh r0, [r2, #0x12]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_0200359C
+_02003594:
+ pop {r4-r6, pc}
+ nop
+_02003598: .word 0xFFFFFC0F
+
+ thumb_func_start FUN_0200359C
+FUN_0200359C: ; 0x0200359C
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x14
+ mul r1, r0
+ ldr r0, [sp, #0x0]
+ mov r6, #0x0
+ add r5, r0, r1
+ add r0, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, #0xc
+ add r7, r2, #0x0
+ add r4, r6, #0x0
+ str r0, [sp, #0x8]
+_020035BC:
+ ldrh r0, [r5, #0xc]
+ lsl r1, r6, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _020035DC
+ ldr r0, [r5, #0x0]
+ lsl r1, r4, #0x1
+ ldr r2, [r5, #0x4]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldr r2, [sp, #0x8]
+ add r3, r7, #0x0
+ bl FUN_020035F8
+_020035DC:
+ add r6, r6, #0x1
+ add r4, r4, r7
+ cmp r6, #0x10
+ blo _020035BC
+ ldr r1, [sp, #0x4]
+ add r5, #0xc
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x0]
+ lsr r1, r1, #0x18
+ add r2, r5, #0x0
+ bl FUN_02003684
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020035F8
+FUN_020035F8: ; 0x020035F8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ add r6, r1, #0x0
+ mov r12, r0
+ str r2, [sp, #0x0]
+ mov lr, r3
+ add r0, r3, #0x0
+ beq _02003680
+_0200360C:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1f
+ ldrh r0, [r0, #0x0]
+ asr r2, r0, #0x5
+ add r5, r2, #0x0
+ and r5, r1
+ ldr r1, [sp, #0x0]
+ asr r4, r0, #0xa
+ ldrh r1, [r1, #0x4]
+ lsl r1, r1, #0x11
+ lsr r3, r1, #0x11
+ ldr r1, [sp, #0x0]
+ ldrh r1, [r1, #0x2]
+ lsl r1, r1, #0x15
+ lsr r2, r1, #0x1b
+ mov r1, #0x1f
+ and r1, r4
+ mov r4, #0x1f
+ and r0, r4
+ and r4, r3
+ sub r4, r4, r0
+ mul r4, r2
+ asr r4, r4, #0x4
+ add r0, r0, r4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ asr r4, r3, #0xa
+ mov r0, #0x1f
+ and r0, r4
+ sub r0, r0, r1
+ mul r0, r2
+ asr r0, r0, #0x4
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ asr r3, r3, #0x5
+ mov r1, #0x1f
+ and r1, r3
+ sub r1, r1, r5
+ mul r1, r2
+ asr r1, r1, #0x4
+ add r1, r5, r1
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0xa
+ lsr r1, r1, #0x13
+ orr r0, r1
+ orr r0, r7
+ strh r0, [r6, #0x0]
+ ldr r0, [sp, #0x4]
+ add r6, r6, #0x2
+ add r0, r0, #0x2
+ str r0, [sp, #0x4]
+ mov r0, r12
+ add r1, r0, #0x1
+ mov r0, lr
+ mov r12, r1
+ cmp r1, r0
+ blo _0200360C
+_02003680:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003684
+FUN_02003684: ; 0x02003684
+ push {r4-r5}
+ ldrh r4, [r2, #0x2]
+ lsl r3, r4, #0x10
+ lsl r4, r4, #0x15
+ lsr r3, r3, #0x1b
+ lsr r4, r4, #0x1b
+ cmp r4, r3
+ bne _020036BE
+ mov r3, #0x46
+ lsl r3, r3, #0x2
+ ldrh r4, [r0, r3]
+ mov r2, #0x1
+ lsl r2, r1
+ lsl r1, r4, #0x10
+ lsr r5, r1, #0x12
+ add r1, r5, #0x0
+ tst r1, r2
+ beq _0200371E
+ eor r2, r5
+ lsl r2, r2, #0x10
+ ldr r1, _02003724 ; =0xFFFF0003
+ lsr r2, r2, #0x10
+ lsl r2, r2, #0x12
+ and r1, r4
+ lsr r2, r2, #0x10
+ orr r1, r2
+ strh r1, [r0, r3]
+ pop {r4-r5}
+ bx lr
+_020036BE:
+ ldrh r0, [r2, #0x4]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ bne _020036F4
+ lsl r0, r4, #0x10
+ asr r1, r0, #0x10
+ ldrh r0, [r2, #0x6]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ cmp r4, r3
+ ble _020036DE
+ lsl r0, r3, #0x10
+ asr r4, r0, #0x10
+_020036DE:
+ ldrh r1, [r2, #0x2]
+ ldr r0, _02003728 ; =0xFFFFF83F
+ and r1, r0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r2, #0x2]
+ pop {r4-r5}
+ bx lr
+_020036F4:
+ lsl r0, r4, #0x10
+ asr r1, r0, #0x10
+ ldrh r0, [r2, #0x6]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ cmp r4, r3
+ bge _0200370C
+ lsl r0, r3, #0x10
+ asr r4, r0, #0x10
+_0200370C:
+ ldrh r1, [r2, #0x2]
+ ldr r0, _02003728 ; =0xFFFFF83F
+ and r1, r0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x15
+ orr r0, r1
+ strh r0, [r2, #0x2]
+_0200371E:
+ pop {r4-r5}
+ bx lr
+ nop
+_02003724: .word 0xFFFF0003
+_02003728: .word 0xFFFFF83F
+
+ thumb_func_start FUN_0200372C
+FUN_0200372C: ; 0x0200372C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ ldr r0, _020038DC ; =0x0000011A
+ ldrh r1, [r6, r0]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x1f
+ bne _02003748
+ sub r0, r0, #0x2
+ ldrh r0, [r6, r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #0x1
+ beq _02003748
+ b _020038DA
+_02003748:
+ mov r7, #0x2
+ mov r5, #0x0
+ add r4, r6, #0x0
+ lsl r7, r7, #0xc
+_02003750:
+ ldr r0, _020038DC ; =0x0000011A
+ ldrh r1, [r6, r0]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x1f
+ bne _02003770
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _0200377C
+ lsl r0, r1, #0x12
+ lsl r1, r5, #0x10
+ lsr r0, r0, #0x12
+ lsr r1, r1, #0x10
+ bl FUN_02003314
+ cmp r0, #0x0
+ beq _0200377C
+_02003770:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ blx DC_FlushRange
+ cmp r5, #0xd
+ bls _0200377E
+_0200377C:
+ b _020038A4
+_0200377E:
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200378A: ; jump table (using 16-bit offset)
+ .short _020037A6 - _0200378A - 2; case 0
+ .short _020037B2 - _0200378A - 2; case 1
+ .short _020037BE - _0200378A - 2; case 2
+ .short _020037CA - _0200378A - 2; case 3
+ .short _020037D6 - _0200378A - 2; case 4
+ .short _020037EA - _0200378A - 2; case 5
+ .short _020037FE - _0200378A - 2; case 6
+ .short _02003814 - _0200378A - 2; case 7
+ .short _0200382A - _0200378A - 2; case 8
+ .short _0200383E - _0200378A - 2; case 9
+ .short _02003852 - _0200378A - 2; case 10
+ .short _02003868 - _0200378A - 2; case 11
+ .short _0200387E - _0200378A - 2; case 12
+ .short _02003892 - _0200378A - 2; case 13
+_020037A6:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9550
+ b _020038A4
+_020037B2:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C94E8
+ b _020038A4
+_020037BE:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9480
+ b _020038A4
+_020037CA:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C9418
+ b _020038A4
+_020037D6:
+ blx FUN_020C8B10
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_020037EA:
+ blx FUN_020C8B10
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_020037FE:
+ blx FUN_020C8B10
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_02003814:
+ blx FUN_020C8B10
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx FUN_020C8A90
+ blx FUN_020C8A2C
+ b _020038A4
+_0200382A:
+ blx FUN_020C88CC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_0200383E:
+ blx FUN_020C88CC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_02003852:
+ blx FUN_020C88CC
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_02003868:
+ blx FUN_020C88CC
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx FUN_020C8858
+ blx FUN_020C880C
+ b _020038A4
+_0200387E:
+ blx FUN_020C89BC
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8948
+ blx FUN_020C88F0
+ b _020038A4
+_02003892:
+ blx FUN_020C87E8
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx FUN_020C8774
+ blx FUN_020C8728
+_020038A4:
+ add r5, r5, #0x1
+ add r4, #0x14
+ cmp r5, #0xe
+ bge _020038AE
+ b _02003750
+_020038AE:
+ ldr r3, _020038DC ; =0x0000011A
+ ldr r1, _020038E0 ; =0xFFFFC000
+ sub r2, r3, #0x2
+ ldrh r2, [r6, r2]
+ ldrh r0, [r6, r3]
+ lsl r2, r2, #0x10
+ and r0, r1
+ lsr r2, r2, #0x12
+ lsr r1, r1, #0x12
+ and r1, r2
+ orr r0, r1
+ strh r0, [r6, r3]
+ ldrh r0, [r6, r3]
+ lsl r0, r0, #0x12
+ lsr r0, r0, #0x12
+ bne _020038DA
+ sub r0, r3, #0x2
+ ldrh r1, [r6, r0]
+ mov r0, #0x3
+ bic r1, r0
+ sub r0, r3, #0x2
+ strh r1, [r6, r0]
+_020038DA:
+ pop {r3-r7, pc}
+ .balign 4
+_020038DC: .word 0x0000011A
+_020038E0: .word 0xFFFFC000
+
+ thumb_func_start FUN_020038E4
+FUN_020038E4: ; 0x020038E4
+ mov r1, #0x46
+ lsl r1, r1, #0x2
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x12
+ bx lr
+
+ thumb_func_start FUN_020038F0
+FUN_020038F0: ; 0x020038F0
+ push {r3-r4}
+ ldr r3, _0200390C ; =0x0000011A
+ lsl r1, r1, #0x10
+ ldrh r4, [r0, r3]
+ ldr r2, _02003910 ; =0xFFFF7FFF
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x1f
+ and r2, r4
+ lsr r1, r1, #0x10
+ orr r1, r2
+ strh r1, [r0, r3]
+ pop {r3-r4}
+ bx lr
+ nop
+_0200390C: .word 0x0000011A
+_02003910: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_02003914
+FUN_02003914: ; 0x02003914
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r6, r0, #0x0
+ str r3, [sp, #0x0]
+ mov r0, #0x14
+ add r4, r1, #0x0
+ mul r4, r0
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x14]
+ add r7, r2, #0x0
+ ldr r5, [sp, #0x20]
+ str r0, [sp, #0x4]
+ lsl r1, r0, #0x1
+ add r0, r6, r4
+ ldr r0, [r0, #0x8]
+ cmp r1, r0
+ bls _0200393A
+ bl ErrorHandling
+_0200393A:
+ sub r0, r7, #0x1
+ cmp r0, #0x1
+ bhi _02003952
+ ldr r2, [r6, r4]
+ lsl r1, r5, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r2, r2, r5
+ lsl r2, r2, #0x1
+ blx MIi_CpuClear16
+_02003952:
+ cmp r7, #0x0
+ beq _0200395A
+ cmp r7, #0x2
+ bne _0200396E
+_0200395A:
+ add r1, r6, r4
+ ldr r2, [r1, #0x4]
+ lsl r1, r5, #0x1
+ add r1, r2, r1
+ ldr r2, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r2, r2, r5
+ lsl r2, r2, #0x1
+ blx MIi_CpuClear16
+_0200396E:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003974
+FUN_02003974: ; 0x02003974
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrh r0, [r0, #0x10]
+ str r1, [sp, #0x4]
+ add r7, r2, #0x0
+ lsl r1, r0, #0x1b
+ lsr r1, r1, #0x1b
+ mov r12, r1
+ lsl r1, r0, #0x16
+ lsl r0, r0, #0x11
+ lsr r1, r1, #0x1b
+ lsr r0, r0, #0x1b
+ mov r2, #0x0
+ mov lr, r1
+ str r0, [sp, #0x8]
+ cmp r7, #0x0
+ bls _020039E2
+_0200399A:
+ ldr r0, [sp, #0x0]
+ lsl r6, r2, #0x1
+ ldrh r4, [r0, r6]
+ lsl r0, r4, #0x1b
+ lsr r1, r0, #0x1b
+ lsl r0, r4, #0x16
+ lsl r4, r4, #0x11
+ lsr r5, r4, #0x1b
+ ldr r4, [sp, #0x8]
+ lsr r0, r0, #0x1b
+ sub r4, r4, r5
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r4, r5, r4
+ lsl r5, r4, #0xa
+ mov r4, r12
+ sub r4, r4, r1
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r1, r1, r4
+ mov r4, lr
+ sub r4, r4, r0
+ mul r4, r3
+ asr r4, r4, #0x4
+ add r0, r0, r4
+ lsl r0, r0, #0x5
+ orr r0, r1
+ add r1, r5, #0x0
+ orr r1, r0
+ ldr r0, [sp, #0x4]
+ strh r1, [r0, r6]
+ add r0, r2, #0x1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, r7
+ blo _0200399A
+_020039E2:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020039E8
+FUN_020039E8: ; 0x020039E8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ mov r2, #0x14
+ add r6, r1, #0x0
+ mul r6, r2
+ str r3, [sp, #0x4]
+ ldr r1, [r5, r6]
+ mov r0, #0x0
+ add r4, r5, r6
+ cmp r1, #0x0
+ beq _02003A0A
+ ldr r1, [r4, #0x4]
+ cmp r1, #0x0
+ beq _02003A0A
+ mov r0, #0x1
+_02003A0A:
+ cmp r0, #0x0
+ bne _02003A12
+ bl ErrorHandling
+_02003A12:
+ add r3, sp, #0x10
+ ldrh r0, [r3, #0x14]
+ add r2, r5, r6
+ lsl r1, r7, #0x1
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r2, [r2, #0x4]
+ add r0, r0, r1
+ add r1, r2, r1
+ ldrb r3, [r3, #0x10]
+ ldr r2, [sp, #0x4]
+ bl FUN_02003974
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003A30
+FUN_02003A30: ; 0x02003A30
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r3, [sp, #0x4]
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ ldr r7, [sp, #0x20]
+ beq _02003A60
+_02003A40:
+ mov r0, #0x1
+ tst r0, r4
+ beq _02003A54
+ str r7, [sp, #0x0]
+ ldr r3, [sp, #0x4]
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ mov r2, #0x10
+ bl FUN_02003974
+_02003A54:
+ lsl r0, r4, #0xf
+ lsr r4, r0, #0x10
+ add r6, #0x20
+ add r5, #0x20
+ cmp r4, #0x0
+ bne _02003A40
+_02003A60:
+ add sp, #0x8
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02003A64
+FUN_02003A64: ; 0x02003A64
+ push {r4-r7, lr}
+ sub sp, #0xc
+ str r3, [sp, #0x8]
+ add r6, r0, #0x0
+ add r7, r1, #0x0
+ ldr r0, [sp, #0x20]
+ add r5, r2, #0x0
+ mov r1, #0x14
+ add r2, r7, #0x0
+ str r0, [sp, #0x20]
+ mul r2, r1
+ mov r4, #0x0
+ ldr r1, [r6, r2]
+ add r0, r4, #0x0
+ cmp r1, #0x0
+ beq _02003A8E
+ add r1, r6, r2
+ ldr r1, [r1, #0x4]
+ cmp r1, #0x0
+ beq _02003A8E
+ mov r0, #0x1
+_02003A8E:
+ cmp r0, #0x0
+ bne _02003A96
+ bl ErrorHandling
+_02003A96:
+ cmp r5, #0x0
+ beq _02003AC0
+_02003A9A:
+ mov r0, #0x1
+ tst r0, r5
+ beq _02003AB6
+ ldr r0, [sp, #0x8]
+ lsl r2, r4, #0x10
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ lsr r2, r2, #0x10
+ mov r3, #0x10
+ bl FUN_020039E8
+_02003AB6:
+ lsl r0, r5, #0xf
+ lsr r5, r0, #0x10
+ add r4, #0x10
+ cmp r5, #0x0
+ bne _02003A9A
+_02003AC0:
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02003AC4
+FUN_02003AC4: ; 0x02003AC4
+ push {r3-r7, lr}
+ mov lr, r1
+ mov r12, r2
+ add r7, r3, #0x0
+ mov r4, #0x0
+ cmp r1, #0x0
+ ble _02003B3C
+ ldr r6, [sp, #0x18]
+_02003AD4:
+ ldrh r3, [r0, #0x0]
+ mov r1, #0x1f
+ add r2, r3, #0x0
+ asr r5, r3, #0xa
+ and r2, r1
+ and r5, r1
+ mov r1, #0x1d
+ mul r1, r5
+ mov r5, #0x4c
+ mul r5, r2
+ asr r3, r3, #0x5
+ mov r2, #0x1f
+ and r3, r2
+ mov r2, #0x97
+ mul r2, r3
+ add r2, r5, r2
+ add r1, r1, r2
+ asr r3, r1, #0x8
+ mov r1, r12
+ add r2, r1, #0x0
+ mul r2, r3
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ asr r2, r1, #0x8
+ add r1, r7, #0x0
+ mul r1, r3
+ mul r3, r6
+ lsl r1, r1, #0x10
+ lsl r3, r3, #0x10
+ lsr r1, r1, #0x10
+ lsr r3, r3, #0x10
+ asr r1, r1, #0x8
+ asr r3, r3, #0x8
+ cmp r2, #0x1f
+ ble _02003B1C
+ mov r2, #0x1f
+_02003B1C:
+ cmp r1, #0x1f
+ ble _02003B22
+ mov r1, #0x1f
+_02003B22:
+ cmp r3, #0x1f
+ ble _02003B28
+ mov r3, #0x1f
+_02003B28:
+ lsl r3, r3, #0xa
+ lsl r1, r1, #0x5
+ orr r1, r3
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ add r4, r4, #0x1
+ mov r1, lr
+ add r0, r0, #0x2
+ cmp r4, r1
+ blt _02003AD4
+_02003B3C:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003B40
+FUN_02003B40: ; 0x02003B40
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ add r0, r1, #0x0
+ add r1, r2, #0x0
+ add r2, sp, #0x4
+ bl FUN_02006C08
+ add r4, r0, #0x0
+ bne _02003B58
+ bl ErrorHandling
+_02003B58:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _02003B64
+ ldr r0, [sp, #0x4]
+ ldr r0, [r0, #0x8]
+ str r0, [sp, #0x1c]
+_02003B64:
+ ldr r0, [sp, #0x2c]
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r3, [sp, #0x28]
+ ldr r0, [r0, #0xc]
+ mov r1, #0x10
+ bl FUN_02003AC4
+ ldr r0, [sp, #0x1c]
+ add r3, sp, #0x8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldrh r3, [r3, #0x18]
+ ldr r1, [r1, #0xc]
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0x0
+ bl FUN_02003054
+ add r0, r4, #0x0
+ bl FUN_02016A18
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02003B98
+FUN_02003B98: ; 0x02003B98
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ blx FUN_020C01D0
+ bl FUN_020040C8
+ add r0, r4, #0x0
+ bl FUN_02004064
+ add r0, r4, #0x0
+ ldr r1, _02003C00 ; =0x000BBC00
+ add r0, #0x94
+ blx FUN_020C2A94
+ add r1, r4, #0x0
+ add r1, #0x90
+ str r0, [r1, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x90
+ ldr r1, _02003C04 ; =0x02104780
+ ldr r2, [r2, #0x0]
+ add r0, r4, #0x0
+ mov r3, #0x0
+ blx FUN_020C26F8
+ add r0, r4, #0x0
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ blx FUN_020C39CC
+ add r0, r4, #0x0
+ bl FUN_02004088
+ add r0, r4, #0x0
+ bl FUN_020040A4
+ ldr r0, _02003C08 ; =0x02107070
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ ldr r0, _02003C0C ; =0x000BCD4C
+ str r5, [r4, r0]
+ ldrh r0, [r6, #0x0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bl FUN_02004D60
+ pop {r4-r6, pc}
+ nop
+_02003C00: .word 0x000BBC00
+_02003C04: .word 0x02104780
+_02003C08: .word 0x02107070
+_02003C0C: .word 0x000BCD4C
+
+ thumb_func_start FUN_02003C10
+FUN_02003C10: ; 0x02003C10
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ bl FUN_02003D04
+ cmp r0, #0x0
+ bne _02003C30
+ ldr r0, _02003C3C ; =0x000BCD00
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ ble _02003C2C
+ sub r1, r1, #0x1
+ str r1, [r4, r0]
+_02003C2C:
+ bl FUN_02003C40
+_02003C30:
+ bl FUN_02005CFC
+ blx FUN_020C01A0
+ pop {r4, pc}
+ nop
+_02003C3C: .word 0x000BCD00
+
+ thumb_func_start FUN_02003C40
+FUN_02003C40: ; 0x02003C40
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ ldr r0, _02003CDC ; =0x02107070
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x6
+ bhi _02003CD8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02003C5C: ; jump table (using 16-bit offset)
+ .short _02003CD8 - _02003C5C - 2; case 0
+ .short _02003C6A - _02003C5C - 2; case 1
+ .short _02003CD8 - _02003C5C - 2; case 2
+ .short _02003C72 - _02003C5C - 2; case 3
+ .short _02003C82 - _02003C5C - 2; case 4
+ .short _02003C92 - _02003C5C - 2; case 5
+ .short _02003CB0 - _02003C5C - 2; case 6
+_02003C6A:
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C72:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C82:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ mov r0, #0x2
+ bl FUN_02003CE8
+ pop {r4, pc}
+_02003C92:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_02004D94
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_020040DC
+ ldr r0, _02003CE0 ; =0x000BCD0E
+ ldrh r0, [r4, r0]
+ bl FUN_0200521C
+ pop {r4, pc}
+_02003CB0:
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_02004D94
+ cmp r0, #0x0
+ bne _02003CD8
+ bl FUN_020040DC
+ ldr r0, _02003CE0 ; =0x000BCD0E
+ ldrh r0, [r4, r0]
+ bl FUN_0200521C
+ ldr r1, _02003CE4 ; =0x000BCD08
+ mov r0, #0x7f
+ ldr r1, [r4, r1]
+ mov r2, #0x0
+ bl FUN_0200538C
+_02003CD8:
+ pop {r4, pc}
+ nop
+_02003CDC: .word 0x02107070
+_02003CE0: .word 0x000BCD0E
+_02003CE4: .word 0x000BCD08
+
+ thumb_func_start FUN_02003CE8
+FUN_02003CE8: ; 0x02003CE8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ ldr r1, _02003CFC ; =0x000BCCFC
+ mov r2, #0x0
+ strh r2, [r0, r1]
+ ldr r0, _02003D00 ; =0x02107070
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+_02003CFC: .word 0x000BCCFC
+_02003D00: .word 0x02107070
+
+ thumb_func_start FUN_02003D04
+FUN_02003D04: ; 0x02003D04
+ push {r4, lr}
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_020048BC
+ cmp r0, #0x0
+ beq _02003D1A
+ mov r0, #0x1
+ pop {r4, pc}
+_02003D1A:
+ ldr r0, _02003D2C ; =0x000BCD12
+ ldrh r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02003D26
+ mov r0, #0x1
+ pop {r4, pc}
+_02003D26:
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02003D2C: .word 0x000BCD12
+
+ thumb_func_start FUN_02003D30
+FUN_02003D30: ; 0x02003D30
+ ldr r0, _02003D34 ; =0x02107078
+ bx lr
+ .balign 4
+_02003D34: .word 0x02107078
+
+ thumb_func_start FUN_02003D38
+FUN_02003D38: ; 0x02003D38
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ cmp r4, #0x27
+ bls _02003D46
+ b _02003E92
+_02003D46:
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02003D52: ; jump table (using 16-bit offset)
+ .short _02003DA8 - _02003D52 - 2; case 0
+ .short _02003DAE - _02003D52 - 2; case 1
+ .short _02003DB4 - _02003D52 - 2; case 2
+ .short _02003DBA - _02003D52 - 2; case 3
+ .short _02003DC0 - _02003D52 - 2; case 4
+ .short _02003DA2 - _02003D52 - 2; case 5
+ .short _02003DC6 - _02003D52 - 2; case 6
+ .short _02003DCC - _02003D52 - 2; case 7
+ .short _02003DD2 - _02003D52 - 2; case 8
+ .short _02003DD8 - _02003D52 - 2; case 9
+ .short _02003DDE - _02003D52 - 2; case 10
+ .short _02003DE4 - _02003D52 - 2; case 11
+ .short _02003DEA - _02003D52 - 2; case 12
+ .short _02003DF0 - _02003D52 - 2; case 13
+ .short _02003DF6 - _02003D52 - 2; case 14
+ .short _02003DFC - _02003D52 - 2; case 15
+ .short _02003E02 - _02003D52 - 2; case 16
+ .short _02003E08 - _02003D52 - 2; case 17
+ .short _02003E0E - _02003D52 - 2; case 18
+ .short _02003E14 - _02003D52 - 2; case 19
+ .short _02003E1A - _02003D52 - 2; case 20
+ .short _02003E20 - _02003D52 - 2; case 21
+ .short _02003E26 - _02003D52 - 2; case 22
+ .short _02003E2C - _02003D52 - 2; case 23
+ .short _02003E32 - _02003D52 - 2; case 24
+ .short _02003E38 - _02003D52 - 2; case 25
+ .short _02003E3E - _02003D52 - 2; case 26
+ .short _02003E44 - _02003D52 - 2; case 27
+ .short _02003E4A - _02003D52 - 2; case 28
+ .short _02003E50 - _02003D52 - 2; case 29
+ .short _02003E56 - _02003D52 - 2; case 30
+ .short _02003E5C - _02003D52 - 2; case 31
+ .short _02003E62 - _02003D52 - 2; case 32
+ .short _02003E68 - _02003D52 - 2; case 33
+ .short _02003E6E - _02003D52 - 2; case 34
+ .short _02003E74 - _02003D52 - 2; case 35
+ .short _02003E7A - _02003D52 - 2; case 36
+ .short _02003E80 - _02003D52 - 2; case 37
+ .short _02003E86 - _02003D52 - 2; case 38
+ .short _02003E8C - _02003D52 - 2; case 39
+_02003DA2:
+ ldr r1, _02003E9C ; =0x000BCCFE
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DA8:
+ ldr r1, _02003EA0 ; =0x000BBCB8
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DAE:
+ ldr r1, _02003EA4 ; =0x000BBCBC
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DB4:
+ ldr r1, _02003EA8 ; =0x000BBCC0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DBA:
+ ldr r1, _02003EAC ; =0x000BBCE0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DC0:
+ ldr r1, _02003EB0 ; =0x000BCCE0
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DC6:
+ ldr r1, _02003EB4 ; =0x000BCD00
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DCC:
+ ldr r1, _02003EB8 ; =0x000BCD04
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DD2:
+ ldr r1, _02003EBC ; =0x000BCD08
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DD8:
+ ldr r1, _02003EC0 ; =0x000BCD0C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DDE:
+ ldr r1, _02003EC4 ; =0x000BCD0E
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DE4:
+ ldr r1, _02003EC8 ; =0x000BCD10
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DEA:
+ ldr r1, _02003ECC ; =0x000BCD11
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DF0:
+ ldr r1, _02003ED0 ; =0x000BCD12
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DF6:
+ ldr r1, _02003ED4 ; =0x000BCD14
+ add r0, r0, r1
+ pop {r4, pc}
+_02003DFC:
+ ldr r1, _02003ED8 ; =0x000BCD15
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E02:
+ ldr r1, _02003EDC ; =0x000BCD16
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E08:
+ ldr r1, _02003EE0 ; =0x000BCD17
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E0E:
+ ldr r1, _02003EE4 ; =0x000BCD18
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E14:
+ ldr r1, _02003EE8 ; =0x000BCD19
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E1A:
+ ldr r1, _02003EEC ; =0x000BCD1A
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E20:
+ ldr r1, _02003EF0 ; =0x000BCD1B
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E26:
+ ldr r1, _02003EF4 ; =0x000BCD1C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E2C:
+ ldr r1, _02003EF8 ; =0x000BCD20
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E32:
+ ldr r1, _02003EFC ; =0x000BCD24
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E38:
+ ldr r1, _02003F00 ; =0x000BCD28
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E3E:
+ ldr r1, _02003F04 ; =0x000BCD2C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E44:
+ ldr r1, _02003F08 ; =0x000BCD30
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E4A:
+ ldr r1, _02003F0C ; =0x000BCD34
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E50:
+ ldr r1, _02003F10 ; =0x000BCD38
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E56:
+ ldr r1, _02003F14 ; =0x000BCD39
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E5C:
+ ldr r1, _02003F18 ; =0x000BCD3A
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E62:
+ ldr r1, _02003F1C ; =0x000BCD3C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E68:
+ ldr r1, _02003F20 ; =0x000BCD40
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E6E:
+ ldr r1, _02003F24 ; =0x000BCD48
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E74:
+ ldr r1, _02003F28 ; =0x000BCD4C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E7A:
+ ldr r1, _02003F2C ; =0x000BCD50
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E80:
+ ldr r1, _02003F30 ; =0x000BCD54
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E86:
+ ldr r1, _02003F34 ; =0x000BCD58
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E8C:
+ ldr r1, _02003F38 ; =0x000BCD5C
+ add r0, r0, r1
+ pop {r4, pc}
+_02003E92:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4, pc}
+ nop
+_02003E9C: .word 0x000BCCFE
+_02003EA0: .word 0x000BBCB8
+_02003EA4: .word 0x000BBCBC
+_02003EA8: .word 0x000BBCC0
+_02003EAC: .word 0x000BBCE0
+_02003EB0: .word 0x000BCCE0
+_02003EB4: .word 0x000BCD00
+_02003EB8: .word 0x000BCD04
+_02003EBC: .word 0x000BCD08
+_02003EC0: .word 0x000BCD0C
+_02003EC4: .word 0x000BCD0E
+_02003EC8: .word 0x000BCD10
+_02003ECC: .word 0x000BCD11
+_02003ED0: .word 0x000BCD12
+_02003ED4: .word 0x000BCD14
+_02003ED8: .word 0x000BCD15
+_02003EDC: .word 0x000BCD16
+_02003EE0: .word 0x000BCD17
+_02003EE4: .word 0x000BCD18
+_02003EE8: .word 0x000BCD19
+_02003EEC: .word 0x000BCD1A
+_02003EF0: .word 0x000BCD1B
+_02003EF4: .word 0x000BCD1C
+_02003EF8: .word 0x000BCD20
+_02003EFC: .word 0x000BCD24
+_02003F00: .word 0x000BCD28
+_02003F04: .word 0x000BCD2C
+_02003F08: .word 0x000BCD30
+_02003F0C: .word 0x000BCD34
+_02003F10: .word 0x000BCD38
+_02003F14: .word 0x000BCD39
+_02003F18: .word 0x000BCD3A
+_02003F1C: .word 0x000BCD3C
+_02003F20: .word 0x000BCD40
+_02003F24: .word 0x000BCD48
+_02003F28: .word 0x000BCD4C
+_02003F2C: .word 0x000BCD50
+_02003F30: .word 0x000BCD54
+_02003F34: .word 0x000BCD58
+_02003F38: .word 0x000BCD5C
+
+ thumb_func_start FUN_02003F3C
+FUN_02003F3C: ; 0x02003F3C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ blx FUN_020C290C
+ add r4, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02003F5A
+ bl ErrorHandling
+_02003F5A:
+ cmp r5, #0x0
+ beq _02003F60
+ str r4, [r5, #0x0]
+_02003F60:
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02003F64
+FUN_02003F64: ; 0x02003F64
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r0, #0x90
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C2828
+ pop {r4, pc}
+
+ thumb_func_start FUN_02003F78
+FUN_02003F78: ; 0x02003F78
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C36A8
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003F90
+FUN_02003F90: ; 0x02003F90
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C3674
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FA8
+FUN_02003FA8: ; 0x02003FA8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02003D30
+ add r2, r0, #0x0
+ add r2, #0x90
+ ldr r2, [r2, #0x0]
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ blx FUN_020C35E0
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FC4
+FUN_02003FC4: ; 0x02003FC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C360C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FDC
+FUN_02003FDC: ; 0x02003FDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ add r1, r0, #0x0
+ add r1, #0x90
+ ldr r1, [r1, #0x0]
+ add r0, r4, #0x0
+ blx FUN_020C3640
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02003FF4
+FUN_02003FF4: ; 0x02003FF4
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ add r4, r0, #0x0
+ cmp r5, #0x9
+ blt _02004008
+ bl ErrorHandling
+ mov r5, #0x0
+_02004008:
+ ldr r0, _02004014 ; =0x000BBC94
+ add r1, r4, r0
+ lsl r0, r5, #0x2
+ add r0, r1, r0
+ pop {r3-r5, pc}
+ nop
+_02004014: .word 0x000BBC94
+
+ thumb_func_start FUN_02004018
+FUN_02004018: ; 0x02004018
+ push {r3, lr}
+ cmp r0, #0x7
+ bhi _0200405A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200402A: ; jump table (using 16-bit offset)
+ .short _0200403E - _0200402A - 2; case 0
+ .short _0200403A - _0200402A - 2; case 1
+ .short _02004042 - _0200402A - 2; case 2
+ .short _02004046 - _0200402A - 2; case 3
+ .short _0200404A - _0200402A - 2; case 4
+ .short _0200404E - _0200402A - 2; case 5
+ .short _02004052 - _0200402A - 2; case 6
+ .short _02004056 - _0200402A - 2; case 7
+_0200403A:
+ mov r0, #0x0
+ pop {r3, pc}
+_0200403E:
+ mov r0, #0x1
+ pop {r3, pc}
+_02004042:
+ mov r0, #0x2
+ pop {r3, pc}
+_02004046:
+ mov r0, #0x3
+ pop {r3, pc}
+_0200404A:
+ mov r0, #0x4
+ pop {r3, pc}
+_0200404E:
+ mov r0, #0x5
+ pop {r3, pc}
+_02004052:
+ mov r0, #0x6
+ pop {r3, pc}
+_02004056:
+ mov r0, #0x7
+ pop {r3, pc}
+_0200405A:
+ bl ErrorHandling
+ mov r0, #0x3
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004064
+FUN_02004064: ; 0x02004064
+ push {r4, lr}
+ ldr r2, _02004080 ; =0x000BCD60
+ mov r1, #0x0
+ add r4, r0, #0x0
+ blx FUN_020DF4A4
+ ldr r0, _02004084 ; =0x000BCD1C
+ mov r1, #0x0
+_02004074:
+ add r1, r1, #0x1
+ str r1, [r4, r0]
+ add r4, r4, #0x4
+ cmp r1, #0x7
+ blt _02004074
+ pop {r4, pc}
+ .balign 4
+_02004080: .word 0x000BCD60
+_02004084: .word 0x000BCD1C
+
+ thumb_func_start FUN_02004088
+FUN_02004088: ; 0x02004088
+ push {r3-r5, lr}
+ ldr r1, _020040A0 ; =0x000BBC94
+ mov r4, #0x0
+ add r5, r0, r1
+_02004090:
+ add r0, r5, #0x0
+ blx FUN_020C0F80
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, #0x9
+ blt _02004090
+ pop {r3-r5, pc}
+ .balign 4
+_020040A0: .word 0x000BBC94
+
+ thumb_func_start FUN_020040A4
+FUN_020040A4: ; 0x020040A4
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, _020040C0 ; =0x000BCD1C
+ add r0, r4, r0
+ bl FUN_02003F3C
+ mov r0, #0x0
+ bl FUN_02003F78
+ ldr r0, _020040C4 ; =0x000BCD20
+ add r0, r4, r0
+ bl FUN_02003F3C
+ pop {r4, pc}
+ .balign 4
+_020040C0: .word 0x000BCD1C
+_020040C4: .word 0x000BCD20
+
+ thumb_func_start FUN_020040C8
+FUN_020040C8: ; 0x020040C8
+ push {r3, lr}
+ blx MIC_Init
+ mov r0, #0x1
+ blx PM_SetAmp
+ mov r0, #0x2
+ blx PM_SetAmpGain
+ pop {r3, pc}
+
+ thumb_func_start FUN_020040DC
+FUN_020040DC: ; 0x020040DC
+ push {r3, lr}
+ mov r0, #0x7
+ mov r1, #0x0
+ blx FUN_020C1040
+ mov r0, #0x7
+ bl FUN_02003FF4
+ blx FUN_020C0F68
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020040F4
+FUN_020040F4: ; 0x020040F4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x5
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004104
+FUN_02004104: ; 0x02004104
+ push {r3, lr}
+ mov r0, #0x5
+ bl FUN_02003D38
+ ldrb r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004110
+FUN_02004110: ; 0x02004110
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x9
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ mov r0, #0x0
+ bl FUN_02004130
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004124
+FUN_02004124: ; 0x02004124
+ push {r3, lr}
+ mov r0, #0x9
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004130
+FUN_02004130: ; 0x02004130
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0xa
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004140
+FUN_02004140: ; 0x02004140
+ push {r3, lr}
+ mov r0, #0xa
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200414C
+FUN_0200414C: ; 0x0200414C
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ strh r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200415C
+FUN_0200415C: ; 0x0200415C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x14
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x15
+ bl FUN_02003D38
+ cmp r5, #0x33
+ bhs _0200417A
+ strb r5, [r4, #0x0]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ pop {r3-r5, pc}
+_0200417A:
+ strb r5, [r0, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004180
+FUN_02004180: ; 0x02004180
+ push {r3, lr}
+ cmp r0, #0x39
+ bgt _020041DE
+ blt _0200418A
+ b _020042C8
+_0200418A:
+ cmp r0, #0x35
+ bgt _020041CC
+ blt _02004192
+ b _0200429A
+_02004192:
+ cmp r0, #0x33
+ bgt _020041C6
+ bge _0200427C
+ cmp r0, #0xe
+ bhi _020041CA
+ add r2, r0, r0
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_020041A8: ; jump table (using 16-bit offset)
+ .short _0200432C - _020041A8 - 2; case 0
+ .short _02004222 - _020041A8 - 2; case 1
+ .short _0200422C - _020041A8 - 2; case 2
+ .short _02004236 - _020041A8 - 2; case 3
+ .short _02004240 - _020041A8 - 2; case 4
+ .short _0200424A - _020041A8 - 2; case 5
+ .short _0200425E - _020041A8 - 2; case 6
+ .short _0200429A - _020041A8 - 2; case 7
+ .short _02004268 - _020041A8 - 2; case 8
+ .short _02004222 - _020041A8 - 2; case 9
+ .short _02004222 - _020041A8 - 2; case 10
+ .short _02004254 - _020041A8 - 2; case 11
+ .short _02004272 - _020041A8 - 2; case 12
+ .short _0200422C - _020041A8 - 2; case 13
+ .short _02004222 - _020041A8 - 2; case 14
+_020041C6:
+ cmp r0, #0x34
+ beq _02004290
+_020041CA:
+ b _0200432C
+_020041CC:
+ cmp r0, #0x37
+ bgt _020041D8
+ bge _020042AE
+ cmp r0, #0x36
+ beq _020042A4
+ b _0200432C
+_020041D8:
+ cmp r0, #0x38
+ beq _020042BE
+ b _0200432C
+_020041DE:
+ cmp r0, #0x3d
+ bgt _020041F8
+ blt _020041E6
+ b _020042F0
+_020041E6:
+ cmp r0, #0x3b
+ bgt _020041F2
+ bge _020042DC
+ cmp r0, #0x3a
+ beq _020042D2
+ b _0200432C
+_020041F2:
+ cmp r0, #0x3c
+ beq _020042E6
+ b _0200432C
+_020041F8:
+ cmp r0, #0x3f
+ bgt _02004206
+ blt _02004200
+ b _02004304
+_02004200:
+ cmp r0, #0x3e
+ beq _020042FA
+ b _0200432C
+_02004206:
+ sub r0, #0x40
+ cmp r0, #0x3
+ bls _0200420E
+ b _0200432C
+_0200420E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0200421A: ; jump table (using 16-bit offset)
+ .short _0200430E - _0200421A - 2; case 0
+ .short _0200431E - _0200421A - 2; case 1
+ .short _02004286 - _0200421A - 2; case 2
+ .short _020042AE - _0200421A - 2; case 3
+_02004222:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200422C:
+ mov r0, #0x2
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004236:
+ mov r0, #0xd
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004240:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200424A:
+ mov r0, #0x2
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004254:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200425E:
+ mov r0, #0xb
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004268:
+ mov r0, #0x1
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004272:
+ mov r0, #0xe
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200427C:
+ mov r0, #0x3
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004286:
+ mov r0, #0x6
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004290:
+ mov r0, #0x5
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200429A:
+ mov r0, #0x9
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042A4:
+ mov r0, #0xa
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042AE:
+ ldr r0, _02004330 ; =0x000005E5
+ bl FUN_02003FDC
+ ldr r0, _02004330 ; =0x000005E5
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+ b _0200432C
+_020042BE:
+ mov r0, #0xc
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042C8:
+ mov r0, #0x7
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042D2:
+ mov r0, #0x8
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042DC:
+ mov r0, #0xf
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042E6:
+ mov r0, #0x3
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042F0:
+ mov r0, #0x5
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_020042FA:
+ mov r0, #0xf
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_02004304:
+ mov r0, #0x4
+ bl FUN_02003F78
+ add r1, r0, #0x0
+ b _0200432C
+_0200430E:
+ ldr r0, _02004334 ; =0x000005ED
+ bl FUN_02003FDC
+ ldr r0, _02004334 ; =0x000005ED
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+ b _0200432C
+_0200431E:
+ ldr r0, _02004338 ; =0x000005EC
+ bl FUN_02003FDC
+ ldr r0, _02004338 ; =0x000005EC
+ bl FUN_02003FC4
+ add r1, r0, #0x0
+_0200432C:
+ add r0, r1, #0x0
+ pop {r3, pc}
+ .balign 4
+_02004330: .word 0x000005E5
+_02004334: .word 0x000005ED
+_02004338: .word 0x000005EC
+
+ thumb_func_start FUN_0200433C
+FUN_0200433C: ; 0x0200433C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ mov r0, #0x14
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02003D38
+ str r0, [sp, #0x0]
+ mov r0, #0x15
+ bl FUN_02003D38
+ str r0, [sp, #0x4]
+ mov r0, #0xd
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ cmp r4, #0x33
+ bhs _02004370
+ ldr r0, [sp, #0x0]
+ ldrb r0, [r0, #0x0]
+ cmp r0, r4
+ bne _0200437E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004370:
+ ldr r0, [sp, #0x4]
+ ldrb r0, [r0, #0x0]
+ cmp r0, r4
+ bne _0200437E
+ add sp, #0x8
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200437E:
+ add r0, r4, #0x0
+ bl FUN_0200415C
+ cmp r4, #0x39
+ bgt _020043DC
+ bge _02004458
+ cmp r4, #0x35
+ bgt _020043CA
+ bge _02004458
+ cmp r4, #0x33
+ bgt _020043C4
+ bge _02004458
+ cmp r4, #0xe
+ bhi _020043C8
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020043A6: ; jump table (using 16-bit offset)
+ .short _020044A0 - _020043A6 - 2; case 0
+ .short _02004460 - _020043A6 - 2; case 1
+ .short _02004484 - _020043A6 - 2; case 2
+ .short _02004496 - _020043A6 - 2; case 3
+ .short _0200441C - _020043A6 - 2; case 4
+ .short _02004430 - _020043A6 - 2; case 5
+ .short _02004444 - _020043A6 - 2; case 6
+ .short _0200444E - _020043A6 - 2; case 7
+ .short _02004496 - _020043A6 - 2; case 8
+ .short _02004496 - _020043A6 - 2; case 9
+ .short _02004496 - _020043A6 - 2; case 10
+ .short _0200443A - _020043A6 - 2; case 11
+ .short _02004496 - _020043A6 - 2; case 12
+ .short _02004496 - _020043A6 - 2; case 13
+ .short _02004472 - _020043A6 - 2; case 14
+_020043C4:
+ cmp r4, #0x34
+ beq _02004458
+_020043C8:
+ b _020044A0
+_020043CA:
+ cmp r4, #0x37
+ bgt _020043D6
+ bge _02004458
+ cmp r4, #0x36
+ beq _02004458
+ b _020044A0
+_020043D6:
+ cmp r4, #0x38
+ beq _02004458
+ b _020044A0
+_020043DC:
+ cmp r4, #0x3d
+ bgt _020043F4
+ bge _02004458
+ cmp r4, #0x3b
+ bgt _020043EE
+ bge _02004458
+ cmp r4, #0x3a
+ beq _02004458
+ b _020044A0
+_020043EE:
+ cmp r4, #0x3c
+ beq _02004458
+ b _020044A0
+_020043F4:
+ cmp r4, #0x3f
+ bgt _02004400
+ bge _02004458
+ cmp r4, #0x3e
+ beq _02004458
+ b _020044A0
+_02004400:
+ add r0, r4, #0x0
+ sub r0, #0x40
+ cmp r0, #0x3
+ bhi _020044A0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02004414: ; jump table (using 16-bit offset)
+ .short _02004458 - _02004414 - 2; case 0
+ .short _02004458 - _02004414 - 2; case 1
+ .short _02004458 - _02004414 - 2; case 2
+ .short _02004458 - _02004414 - 2; case 3
+_0200441C:
+ mov r0, #0x0
+ bl FUN_0200516C
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020044D4
+ mov r0, #0x0
+ strh r0, [r7, #0x0]
+ b _020044A0
+_02004430:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02004648
+ b _020044A0
+_0200443A:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_02004680
+ b _020044A0
+_02004444:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020046A0
+ b _020044A0
+_0200444E:
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_020046C4
+ b _020044A0
+_02004458:
+ add r0, r4, #0x0
+ bl FUN_020046E8
+ b _020044A0
+_02004460:
+ mov r0, #0x1
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004472:
+ mov r0, #0x2
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004484:
+ mov r0, #0x0
+ bl FUN_0200516C
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+ b _020044A0
+_02004496:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ add r2, r6, #0x0
+ bl FUN_02004704
+_020044A0:
+ mov r0, #0x1
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020044A8
+FUN_020044A8: ; 0x020044A8
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ ldr r0, [r0, #0x0]
+ bl FUN_02003F64
+ mov r0, #0x18
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r4, #0x0
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020044D4
+FUN_020044D4: ; 0x020044D4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ mov r0, #0x1f
+ bl FUN_02003D38
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ add r4, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _0200450E
+ cmp r4, r5
+ bne _0200450E
+ bl FUN_02004140
+ mov r1, #0x12
+ lsl r1, r1, #0x6
+ cmp r0, r1
+ bne _02004566
+_0200450E:
+ mov r0, #0x1
+ bl FUN_02004DBC
+ bl FUN_02005454
+ cmp r4, r5
+ beq _02004528
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+ bl FUN_0200541C
+_02004528:
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02004560
+ mov r0, #0x2
+ bl FUN_02004748
+ bl FUN_02003F64
+ mov r0, #0x4
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ cmp r4, r5
+ beq _02004554
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+_02004554:
+ lsl r1, r4, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ bl FUN_02004568
+ pop {r4-r6, pc}
+_02004560:
+ add r0, r5, #0x0
+ bl FUN_0200521C
+_02004566:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004568
+FUN_02004568: ; 0x02004568
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ ldr r1, _020045C0 ; =0x000003E9
+ cmp r0, r1
+ beq _02004594
+ add r1, r1, #0x2
+ cmp r0, r1
+ beq _02004594
+ add r0, r5, #0x0
+ mov r1, #0x4
+ bl FUN_02003FA8
+ bl ErrorHandling
+ b _0200459C
+_02004594:
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x6
+ bl FUN_02003FA8
+_0200459C:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_020047C8
+ mov r0, #0x7f
+ mov r1, #0x28
+ mov r2, #0x0
+ bl FUN_0200538C
+ mov r0, #0x0
+ bl FUN_02004DBC
+ pop {r3-r5, pc}
+ .balign 4
+_020045C0: .word 0x000003E9
+
+ thumb_func_start FUN_020045C4
+FUN_020045C4: ; 0x020045C4
+ push {r3-r7, lr}
+ add r7, r0, #0x0
+ mov r0, #0x12
+ add r5, r1, #0x0
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ beq _020045E4
+ cmp r5, #0x0
+ bne _02004642
+_020045E4:
+ mov r0, #0x1
+ bl FUN_02004748
+ bl FUN_02003F64
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x2
+ bl FUN_02003FA8
+ mov r0, #0x18
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x4
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ ldr r1, _02004644 ; =0x000003E9
+ cmp r0, r1
+ beq _02004630
+ add r1, r1, #0x2
+ cmp r0, r1
+ beq _02004630
+ add r0, r7, #0x0
+ mov r1, #0x4
+ bl FUN_02003FA8
+ bl ErrorHandling
+ b _02004638
+_02004630:
+ ldrh r0, [r4, #0x0]
+ mov r1, #0x4
+ bl FUN_02003FA8
+_02004638:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+_02004642:
+ pop {r3-r7, pc}
+ .balign 4
+_02004644: .word 0x000003E9
+
+ thumb_func_start FUN_02004648
+FUN_02004648: ; 0x02004648
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_020051AC
+ mov r0, #0x2
+ bl FUN_02004748
+ bl FUN_02003F64
+ mov r0, #0x5
+ bl FUN_02004180
+ mov r0, #0x19
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004680
+FUN_02004680: ; 0x02004680
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ bl FUN_02004810
+ mov r0, #0x4
+ bl FUN_020044A8
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020046A0
+FUN_020046A0: ; 0x020046A0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ mov r0, #0x6
+ bl FUN_020044A8
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020046C4
+FUN_020046C4: ; 0x020046C4
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x17
+ bl FUN_02003D38
+ bl FUN_0200541C
+ mov r0, #0x7
+ bl FUN_020044A8
+ mov r0, #0x1
+ bl FUN_02004DBC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020046E8
+FUN_020046E8: ; 0x020046E8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02004738
+ add r0, r4, #0x0
+ bl FUN_02004180
+ mov r0, #0x1b
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004704
+FUN_02004704: ; 0x02004704
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x17
+ add r4, r1, #0x0
+ bl FUN_02003D38
+ bl FUN_0200541C
+ add r0, r5, #0x0
+ bl FUN_020044A8
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004724
+FUN_02004724: ; 0x02004724
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ bl FUN_020051AC
+ add r0, r4, #0x0
+ bl FUN_0200521C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004738
+FUN_02004738: ; 0x02004738
+ push {r3, lr}
+ mov r0, #0x4
+ bl FUN_02004748
+ bl FUN_02003F64
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004748
+FUN_02004748: ; 0x02004748
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ cmp r4, #0x7
+ blt _02004762
+ bl ErrorHandling
+ mov r0, #0x1a
+ bl FUN_02003D38
+ ldr r0, [r0, #0x0]
+ pop {r3-r5, pc}
+_02004762:
+ cmp r4, #0x6
+ bhi _020047C4
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02004772: ; jump table (using 16-bit offset)
+ .short _02004780 - _02004772 - 2; case 0
+ .short _0200478A - _02004772 - 2; case 1
+ .short _02004794 - _02004772 - 2; case 2
+ .short _0200479E - _02004772 - 2; case 3
+ .short _020047A8 - _02004772 - 2; case 4
+ .short _020047B2 - _02004772 - 2; case 5
+ .short _020047BC - _02004772 - 2; case 6
+_02004780:
+ mov r0, #0x16
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_0200478A:
+ mov r0, #0x17
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_02004794:
+ mov r0, #0x18
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_0200479E:
+ mov r0, #0x19
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047A8:
+ mov r0, #0x1a
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047B2:
+ mov r0, #0x1b
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ b _020047C4
+_020047BC:
+ mov r0, #0x1c
+ bl FUN_02003D38
+ add r5, r0, #0x0
+_020047C4:
+ ldr r0, [r5, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020047C8
+FUN_020047C8: ; 0x020047C8
+ push {r4-r6, lr}
+ add r5, r1, #0x0
+ cmp r0, #0x1
+ bne _020047DC
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r4, #0x0
+ b _020047EA
+_020047DC:
+ cmp r0, #0x7
+ bne _0200480E
+ mov r0, #0xc
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r4, #0x7
+_020047EA:
+ cmp r5, #0x0
+ bne _02004800
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02004110
+_02004800:
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C0F8C
+ strb r5, [r6, #0x0]
+_0200480E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004810
+FUN_02004810: ; 0x02004810
+ push {r4, lr}
+ mov r0, #0xb
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xc
+ bl FUN_02003D38
+ mov r1, #0x0
+ strb r1, [r4, #0x0]
+ strb r1, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004828
+FUN_02004828: ; 0x02004828
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0EF4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200483C
+FUN_0200483C: ; 0x0200483C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bpl _02004844
+ mov r4, #0x0
+_02004844:
+ cmp r4, #0x7f
+ ble _0200484A
+ mov r4, #0x7f
+_0200484A:
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C0F30
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004858
+FUN_02004858: ; 0x02004858
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ blx FUN_020C23FC
+ cmp r5, #0x1
+ beq _02004868
+ cmp r5, #0x8
+ bne _0200486C
+_02004868:
+ mov r4, #0x7f
+ b _02004872
+_0200486C:
+ cmp r0, #0x0
+ beq _0200488A
+ ldrb r4, [r0, #0x2]
+_02004872:
+ bl FUN_020313EC
+ cmp r0, #0x1
+ bne _0200488A
+ add r0, r4, #0x0
+ mov r1, #0x5
+ blx _s32_div_f
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_0200483C
+_0200488A:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200488C
+FUN_0200488C: ; 0x0200488C
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r1, r4, #0x0
+ bl FUN_0200483C
+ pop {r4, pc}
+
+ thumb_func_start FUN_020048A0
+FUN_020048A0: ; 0x020048A0
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ mov r2, #0x0
+ mvn r2, r2
+ add r1, r5, #0x0
+ add r3, r2, #0x0
+ str r4, [sp, #0x0]
+ blx FUN_020C3910
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048BC
+FUN_020048BC: ; 0x020048BC
+ push {r4, lr}
+ add r4, r0, #0x0
+ bpl _020048C6
+ bl ErrorHandling
+_020048C6:
+ add r0, r4, #0x0
+ blx FUN_020C0F50
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048D0
+FUN_020048D0: ; 0x020048D0
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _020048DA
+ mov r0, #0xff
+ pop {r3, pc}
+_020048DA:
+ blx FUN_020C23FC
+ cmp r0, #0x0
+ bne _020048E6
+ mov r0, #0xff
+ pop {r3, pc}
+_020048E6:
+ ldrb r0, [r0, #0x5]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_020048EC
+FUN_020048EC: ; 0x020048EC
+ ldr r3, _020048F0 ; =FUN_020C0E14
+ bx r3
+ .balign 4
+_020048F0: .word FUN_020C0E14
+
+ thumb_func_start FUN_020048F4
+FUN_020048F4: ; 0x020048F4
+ push {r3, lr}
+ bl FUN_02004900
+ blx FUN_020C22D0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004900
+FUN_02004900: ; 0x02004900
+ push {r3, lr}
+ blx FUN_020C23FC
+ cmp r0, #0x0
+ bne _0200490E
+ mov r0, #0x0
+ pop {r3, pc}
+_0200490E:
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004914
+FUN_02004914: ; 0x02004914
+ ldr r3, _02004918 ; =MIC_StartAutoSampling
+ bx r3
+ .balign 4
+_02004918: .word MIC_StartAutoSampling
+
+ thumb_func_start FUN_0200491C
+FUN_0200491C: ; 0x0200491C
+ push {r3, lr}
+ bl FUN_02003D30
+ blx MIC_StopAutoSampling
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004928
+FUN_02004928: ; 0x02004928
+ push {r3, lr}
+ blx MIC_DoSamplingAsync
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004930
+FUN_02004930: ; 0x02004930
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004954
+ cmp r5, #0xf
+ beq _02004954
+ bl ErrorHandling
+_02004954:
+ cmp r5, #0xe
+ bne _02004962
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _02004962
+ bl ErrorHandling
+_02004962:
+ cmp r5, #0xf
+ bne _02004970
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02004970
+ bl ErrorHandling
+_02004970:
+ cmp r5, #0xe
+ bne _0200497C
+ mov r0, #0x0
+ bl FUN_02003D38
+ pop {r4-r6, pc}
+_0200497C:
+ mov r0, #0x1
+ bl FUN_02003D38
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004984
+FUN_02004984: ; 0x02004984
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _020049A8
+ cmp r5, #0xf
+ beq _020049A8
+ bl ErrorHandling
+_020049A8:
+ cmp r5, #0xe
+ bne _020049D6
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _020049D0
+ mov r0, #0x0
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020C0688
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020049CA
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020049CA:
+ mov r0, #0x1
+ strb r0, [r6, #0x0]
+ b _020049FE
+_020049D0:
+ bl ErrorHandling
+ b _020049FE
+_020049D6:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020049FA
+ mov r0, #0x1
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ blx FUN_020C0688
+ str r0, [r6, #0x0]
+ cmp r0, #0x0
+ bne _020049F4
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_020049F4:
+ mov r0, #0x1
+ strb r0, [r4, #0x0]
+ b _020049FE
+_020049FA:
+ bl ErrorHandling
+_020049FE:
+ mov r0, #0x1
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004A04
+FUN_02004A04: ; 0x02004A04
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004A2A
+ cmp r5, #0xf
+ beq _02004A2A
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02004A2A:
+ cmp r5, #0xe
+ bne _02004A4C
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02004A46
+ add r0, r5, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0670
+ mov r0, #0x0
+ strb r0, [r6, #0x0]
+ pop {r4-r6, pc}
+_02004A46:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02004A4C:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02004A64
+ add r0, r5, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0670
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r4-r6, pc}
+_02004A64:
+ bl ErrorHandling
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004A6C
+FUN_02004A6C: ; 0x02004A6C
+ push {r3-r5, lr}
+ sub sp, #0x18
+ add r3, r0, #0x0
+ ldr r0, [r3, #0x10]
+ add r4, r1, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [r3, #0x14]
+ str r0, [sp, #0x4]
+ ldr r0, [r3, #0x18]
+ str r0, [sp, #0x8]
+ ldr r0, [r3, #0x1c]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r3, #0x0]
+ ldr r1, [r3, #0x4]
+ ldr r2, [r3, #0x8]
+ ldr r0, [r0, #0x0]
+ ldr r3, [r3, #0xc]
+ blx FUN_020C054C
+ add r5, r0, #0x0
+ bne _02004AA4
+ add r0, r4, #0x0
+ bl FUN_02004A04
+_02004AA4:
+ add r0, r5, #0x0
+ add sp, #0x18
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004AAC
+FUN_02004AAC: ; 0x02004AAC
+ push {r3, lr}
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C0510
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004ABC
+FUN_02004ABC: ; 0x02004ABC
+ push {r3, lr}
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ blx FUN_020C03B8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004ACC
+FUN_02004ACC: ; 0x02004ACC
+ push {r4, lr}
+ add r4, r1, #0x0
+ cmp r4, #0x7f
+ bls _02004AD6
+ mov r4, #0x7f
+_02004AD6:
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C041C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004AE4
+FUN_02004AE4: ; 0x02004AE4
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r4, #0x0
+ blx FUN_020C044C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004AF8
+FUN_02004AF8: ; 0x02004AF8
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ add r5, r1, #0x0
+ bl FUN_020313EC
+ cmp r0, #0x1
+ bne _02004B20
+ add r0, r4, #0x0
+ bl FUN_02004930
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x5
+ blx _s32_div_f
+ add r1, r0, #0x0
+ ldr r0, [r4, #0x0]
+ blx FUN_020C04DC
+ pop {r3-r5, pc}
+_02004B20:
+ add r0, r4, #0x0
+ bl FUN_02004930
+ ldr r0, [r0, #0x0]
+ add r1, r5, #0x0
+ blx FUN_020C04DC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004B30
+FUN_02004B30: ; 0x02004B30
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r6, r0, #0x0
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r5, r3, #0x0
+ bl FUN_02003D30
+ mov r0, #0x21
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ cmp r5, #0xe
+ beq _02004B54
+ cmp r5, #0xf
+ beq _02004B54
+ bl ErrorHandling
+_02004B54:
+ add r0, r6, #0x0
+ blx FUN_020C226C
+ add r7, r0, #0x0
+ bne _02004B68
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B68:
+ ldr r0, [r7, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ blx FUN_020C217C
+ add r6, r0, #0x0
+ bne _02004B80
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B80:
+ cmp r5, #0xe
+ bne _02004BCE
+ ldr r0, [sp, #0x48]
+ add r1, r6, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02004B9C
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004B9C:
+ mov r1, #0x0
+ add r2, r6, #0x0
+ blx FUN_020DF4A4
+ ldr r0, [r7, #0x0]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ add r2, r6, #0x0
+ mov r3, #0x0
+ blx FUN_020C2104
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02004BC6
+ bl ErrorHandling
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02004BC6:
+ ldr r0, [r4, #0x0]
+ add r1, r6, #0x0
+ bl FUN_02004C1C
+_02004BCE:
+ add r0, r5, #0x0
+ bl FUN_02004930
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x10]
+ ldr r0, _02004C18 ; =0x00003443
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x24]
+ mov r0, #0x6
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x4]
+ add r1, r5, #0x0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x8
+ str r6, [sp, #0x1c]
+ bl FUN_02004A6C
+ add r4, r0, #0x0
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ bl FUN_02004AF8
+ mov r0, #0xe
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+_02004C18: .word 0x00003443
+
+ thumb_func_start FUN_02004C1C
+FUN_02004C1C: ; 0x02004C1C
+ push {r3-r6}
+ mov r5, #0x0
+ lsr r6, r1, #0x1
+ beq _02004C36
+ sub r2, r1, #0x1
+_02004C26:
+ sub r3, r2, r5
+ ldrb r4, [r0, r5]
+ ldrb r1, [r0, r3]
+ strb r1, [r0, r5]
+ add r5, r5, #0x1
+ strb r4, [r0, r3]
+ cmp r5, r6
+ blo _02004C26
+_02004C36:
+ pop {r3-r6}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02004C3C
+FUN_02004C3C: ; 0x02004C3C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0xe
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x21
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ cmp r5, #0xe
+ beq _02004C60
+ cmp r5, #0xf
+ beq _02004C60
+ bl ErrorHandling
+_02004C60:
+ add r0, r5, #0x0
+ bl FUN_02004AAC
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02004C76
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ ldr r0, [r6, #0x0]
+ bl FUN_02016A18
+_02004C76:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004C78
+FUN_02004C78: ; 0x02004C78
+ ldr r3, _02004C7C ; =FUN_020C1E58
+ bx r3
+ .balign 4
+_02004C7C: .word FUN_020C1E58
+
+ thumb_func_start FUN_02004C80
+FUN_02004C80: ; 0x02004C80
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ bl FUN_02003D30
+ mov r0, #0x3
+ bl FUN_02003D38
+ mov r1, #0x1
+ mov r3, #0xfa
+ lsl r1, r1, #0xc
+ mov r2, #0x0
+ lsl r3, r3, #0x6
+ str r4, [sp, #0x0]
+ blx FUN_020C1FF0
+ add sp, #0x4
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02004CA4
+FUN_02004CA4: ; 0x02004CA4
+ ldr r3, _02004CA8 ; =FUN_020C1F54
+ bx r3
+ .balign 4
+_02004CA8: .word FUN_020C1F54
+
+ thumb_func_start FUN_02004CAC
+FUN_02004CAC: ; 0x02004CAC
+ ldr r3, _02004CB0 ; =FUN_020C1FA4
+ bx r3
+ .balign 4
+_02004CB0: .word FUN_020C1FA4
+
+ thumb_func_start FUN_02004CB4
+FUN_02004CB4: ; 0x02004CB4
+ push {r3-r4, lr}
+ sub sp, #0xc
+ bl FUN_02003D30
+ mov r0, #0x4
+ bl FUN_02003D38
+ mov r1, #0x0
+ mov r2, #0x1c
+ blx MI_CpuFill8
+ mov r0, #0x3
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x4
+ bl FUN_02003D38
+ mov r2, #0x2
+ ldr r1, _02004CF4 ; =FUN_02005068
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ lsl r1, r2, #0xb
+ ldr r3, _02004CF8 ; =0x000055F0
+ add r0, r4, #0x0
+ mov r2, #0x0
+ blx FUN_020C1EA4
+ add sp, #0xc
+ pop {r3-r4, pc}
+ nop
+_02004CF4: .word FUN_02005068
+_02004CF8: .word 0x000055F0
+
+ thumb_func_start FUN_02004CFC
+FUN_02004CFC: ; 0x02004CFC
+ ldr r3, _02004D00 ; =FUN_020C1E68
+ bx r3
+ .balign 4
+_02004D00: .word FUN_020C1E68
+
+ thumb_func_start FUN_02004D04
+FUN_02004D04: ; 0x02004D04
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x13
+ bl FUN_02003D38
+ cmp r4, #0x8
+ ble _02004D16
+ mov r4, #0x8
+ b _02004D1C
+_02004D16:
+ cmp r4, #0x0
+ bge _02004D1C
+ mov r4, #0x0
+_02004D1C:
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02004D20
+FUN_02004D20: ; 0x02004D20
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0EA4
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D34
+FUN_02004D34: ; 0x02004D34
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02004D20
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D4C
+FUN_02004D4C: ; 0x02004D4C
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0E7C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02004D60
+FUN_02004D60: ; 0x02004D60
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020C0174
+ ldr r0, _02004D70 ; =0x021C3DD8
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ nop
+_02004D70: .word 0x021C3DD8
+
+ thumb_func_start FUN_02004D74
+FUN_02004D74: ; 0x02004D74
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x6
+ bl FUN_02003D38
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004D84
+FUN_02004D84: ; 0x02004D84
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x7
+ bl FUN_02003D38
+ str r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004D94
+FUN_02004D94: ; 0x02004D94
+ push {r3, lr}
+ mov r0, #0x7
+ bl FUN_02003D38
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _02004DAA
+ mov r1, #0x0
+ strh r1, [r0, #0x0]
+ add r0, r1, #0x0
+ pop {r3, pc}
+_02004DAA:
+ sub r1, r1, #0x1
+ strh r1, [r0, #0x0]
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004DB4
+FUN_02004DB4: ; 0x02004DB4
+ ldr r0, _02004DB8 ; =0x021C3DE0
+ bx lr
+ .balign 4
+_02004DB8: .word 0x021C3DE0
+
+ thumb_func_start FUN_02004DBC
+FUN_02004DBC: ; 0x02004DBC
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x12
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004DCC
+FUN_02004DCC: ; 0x02004DCC
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x15
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02004E44
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ mov r0, #0x5
+ bl FUN_02003CE8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004E08
+FUN_02004E08: ; 0x02004E08
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ mov r0, #0x8
+ add r6, r1, #0x0
+ add r7, r2, #0x0
+ str r3, [sp, #0x8]
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x14]
+ ldr r3, [sp, #0x8]
+ add r1, r6, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x28]
+ add r2, r7, #0x0
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ bl FUN_02004E44
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x0]
+ mov r0, #0x6
+ bl FUN_02003CE8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02004E44
+FUN_02004E44: ; 0x02004E44
+ push {r3-r7, lr}
+ add r6, r2, #0x0
+ mov r0, #0x2
+ add r5, r1, #0x0
+ add r7, r3, #0x0
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ add r1, r6, #0x0
+ bl FUN_020053CC
+ mov r0, #0x0
+ bl FUN_02004110
+ add r0, r5, #0x0
+ bl FUN_02004130
+ add r0, r7, #0x0
+ bl FUN_02004D84
+ add r0, r5, #0x0
+ bl FUN_020048F4
+ str r0, [r4, #0x0]
+ add r0, sp, #0x8
+ ldrb r0, [r0, #0x10]
+ bl FUN_02004DBC
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02004E80
+FUN_02004E80: ; 0x02004E80
+ cmp r0, #0x0
+ bne _02004E88
+ mov r0, #0x0
+ bx lr
+_02004E88:
+ add r0, #0xc
+ bx lr
+
+ thumb_func_start FUN_02004E8C
+FUN_02004E8C: ; 0x02004E8C
+ cmp r0, #0x0
+ bne _02004E94
+ mov r0, #0x0
+ bx lr
+_02004E94:
+ ldr r0, [r0, #0x8]
+ bx lr
+
+ thumb_func_start FUN_02004E98
+FUN_02004E98: ; 0x02004E98
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x5
+ bl FUN_02004748
+ bl FUN_02003F64
+ lsl r0, r5, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _02004ECC ; =0x000001B9
+ cmp r4, r0
+ beq _02004EBC
+ add r0, #0x36
+ cmp r5, r0
+ bgt _02004EBA
+ cmp r5, #0x0
+ bne _02004EBC
+_02004EBA:
+ mov r4, #0x1
+_02004EBC:
+ add r0, r4, #0x0
+ bl FUN_02003FC4
+ add r0, r4, #0x0
+ bl FUN_02004ED0
+ pop {r3-r5, pc}
+ nop
+_02004ECC: .word 0x000001B9
+
+ thumb_func_start FUN_02004ED0
+FUN_02004ED0: ; 0x02004ED0
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x20
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ lsl r0, r5, #0x10
+ ldr r1, _02004F24 ; =0x000001B9
+ lsr r0, r0, #0x10
+ cmp r0, r1
+ beq _02004EF2
+ add r1, #0x36
+ cmp r5, r1
+ bgt _02004EF0
+ cmp r5, #0x0
+ bne _02004EF2
+_02004EF0:
+ mov r0, #0x1
+_02004EF2:
+ blx FUN_020C226C
+ cmp r0, #0x0
+ bne _02004F02
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02004F02:
+ ldr r0, [r0, #0x0]
+ lsl r0, r0, #0x8
+ lsr r0, r0, #0x8
+ blx FUN_020C20DC
+ cmp r0, #0x0
+ bne _02004F18
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02004F18:
+ mov r1, #0x0
+ blx SND_GetWaveDataAddress
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ nop
+_02004F24: .word 0x000001B9
+
+ thumb_func_start FUN_02004F28
+FUN_02004F28: ; 0x02004F28
+ push {r4-r6, lr}
+ mov r0, #0x1
+ add r5, r1, #0x0
+ add r6, r2, #0x0
+ bl FUN_02004F64
+ mov r1, #0x3
+ add r4, r0, #0x0
+ add r0, r6, #0x0
+ lsl r1, r1, #0x8
+ ldr r5, [r5, #0x8]
+ blx _s32_div_f
+ lsl r1, r0, #0x1
+ bpl _02004F50
+ mov r0, #0x20
+ blx _s32_div_f
+ neg r0, r0
+ b _02004F5A
+_02004F50:
+ cmp r1, #0x0
+ bne _02004F58
+ mov r0, #0x20
+ b _02004F5A
+_02004F58:
+ lsl r0, r1, #0x5
+_02004F5A:
+ mul r0, r4
+ cmp r0, r5
+ blo _02004F62
+ mov r0, #0x0
+_02004F62:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02004F64
+FUN_02004F64: ; 0x02004F64
+ push {r3, lr}
+ bl FUN_02003FF4
+ blx FUN_020C0DD4
+ pop {r3, pc}
+
+ thumb_func_start FUN_02004F70
+FUN_02004F70: ; 0x02004F70
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ ldr r1, [sp, #0x0]
+ mov r0, #0x1
+ add r2, r3, #0x0
+ bl FUN_02004F28
+ add r1, r0, #0x0
+ mov r12, r0
+ sub r1, #0x64
+ bpl _02004F8E
+ mov r1, #0x0
+_02004F8E:
+ ldr r0, [sp, #0x0]
+ mov r3, #0x0
+ add r0, r0, r1
+ ldrb r0, [r0, #0xc]
+ add r7, r3, #0x0
+ cmp r0, #0x80
+ bhs _02004FA0
+ mov r0, #0x1
+ b _02004FA2
+_02004FA0:
+ sub r0, r3, #0x1
+_02004FA2:
+ lsl r0, r0, #0x18
+ asr r5, r0, #0x18
+ mov r0, r12
+ cmp r1, r0
+ bhs _02005022
+_02004FAC:
+ mov r0, #0x0
+ cmp r5, #0x0
+ ble _02004FC6
+ ldr r2, [sp, #0x0]
+ add r2, r2, r1
+ str r2, [sp, #0x4]
+ ldrb r2, [r2, #0xc]
+ cmp r2, #0x80
+ bls _02004FC2
+ mov r0, #0x1
+ b _02004FD8
+_02004FC2:
+ add r3, r3, #0x1
+ b _02004FD8
+_02004FC6:
+ ldr r2, [sp, #0x0]
+ add r2, r2, r1
+ str r2, [sp, #0x4]
+ ldrb r2, [r2, #0xc]
+ cmp r2, #0x80
+ bhs _02004FD6
+ mov r0, #0x1
+ b _02004FD8
+_02004FD6:
+ add r3, r3, #0x1
+_02004FD8:
+ cmp r0, #0x1
+ bne _0200501A
+ ldr r5, _02005064 ; =0x020ECB8C
+ mov r2, #0x0
+_02004FE0:
+ ldrb r0, [r5, #0x0]
+ cmp r3, r0
+ bge _02004FEA
+ add r7, r2, #0x0
+ b _02004FF2
+_02004FEA:
+ add r2, r2, #0x1
+ add r5, r5, #0x1
+ cmp r2, #0x9
+ blt _02004FE0
+_02004FF2:
+ cmp r7, r6
+ blt _02004FF8
+ sub r7, r6, #0x1
+_02004FF8:
+ cmp r3, #0x0
+ beq _02005006
+ sub r0, r6, #0x1
+ sub r0, r0, r7
+ ldrb r2, [r4, r0]
+ add r2, r2, #0x1
+ strb r2, [r4, r0]
+_02005006:
+ ldr r0, [sp, #0x4]
+ mov r3, #0x0
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x80
+ bhs _02005014
+ mov r0, #0x1
+ b _02005016
+_02005014:
+ sub r0, r3, #0x1
+_02005016:
+ lsl r0, r0, #0x18
+ asr r5, r0, #0x18
+_0200501A:
+ add r1, r1, #0x2
+ mov r0, r12
+ cmp r1, r0
+ blo _02004FAC
+_02005022:
+ mov r2, #0x0
+ cmp r6, #0x0
+ ble _02005038
+ mov r0, #0x9
+_0200502A:
+ ldrb r1, [r4, r2]
+ cmp r1, #0xa
+ blo _02005032
+ strb r0, [r4, r2]
+_02005032:
+ add r2, r2, #0x1
+ cmp r2, r6
+ blt _0200502A
+_02005038:
+ sub r2, r6, #0x1
+ mov r3, #0x0
+ cmp r2, #0x0
+ ble _02005060
+_02005040:
+ ldrb r0, [r4, r3]
+ add r1, r4, r3
+ cmp r0, #0x0
+ bne _0200505A
+ ldrb r0, [r1, #0x1]
+ cmp r0, #0x0
+ beq _0200505A
+ add r0, r3, #0x1
+ ldrb r0, [r4, r0]
+ add sp, #0x8
+ lsr r0, r0, #0x1
+ strb r0, [r1, #0x0]
+ pop {r3-r7, pc}
+_0200505A:
+ add r3, r3, #0x1
+ cmp r3, r2
+ blt _02005040
+_02005060:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+_02005064: .word 0x020ECB8C
+
+ thumb_func_start FUN_02005068
+FUN_02005068: ; 0x02005068
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x48]
+ add r6, r1, #0x0
+ str r0, [sp, #0xc]
+ mov r0, #0x13
+ str r2, [sp, #0x0]
+ add r4, r3, #0x0
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ cmp r4, #0x1
+ beq _0200508A
+ ldr r0, [sp, #0x0]
+ lsr r0, r0, #0x1
+ str r0, [sp, #0x0]
+_0200508A:
+ ldrb r2, [r7, #0x0]
+ cmp r2, #0x0
+ beq _0200515A
+ mov r0, #0x0
+ cmp r2, #0x0
+ ble _020050BC
+ add r1, sp, #0x10
+_02005098:
+ ldr r3, [sp, #0x0]
+ sub r2, r3, r2
+ add r2, r0, r2
+ lsl r2, r2, #0x1
+ ldrsh r2, [r5, r2]
+ strh r2, [r1, #0x0]
+ ldrb r3, [r7, #0x0]
+ ldr r2, [sp, #0x0]
+ sub r2, r2, r3
+ add r2, r0, r2
+ lsl r2, r2, #0x1
+ ldrsh r2, [r6, r2]
+ add r0, r0, #0x1
+ strh r2, [r1, #0x2]
+ ldrb r2, [r7, #0x0]
+ add r1, r1, #0x4
+ cmp r0, r2
+ blt _02005098
+_020050BC:
+ ldr r0, [sp, #0x0]
+ sub r4, r0, #0x1
+ sub r0, r2, #0x1
+ cmp r4, r0
+ blt _02005126
+ lsl r1, r4, #0x1
+ add r0, r5, r1
+ str r0, [sp, #0x8]
+ add r0, r6, r1
+ str r0, [sp, #0x4]
+_020050D0:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ cmp r2, #0x0
+ ble _020050E6
+_020050D8:
+ sub r3, r4, r1
+ lsl r3, r3, #0x1
+ ldrsh r3, [r5, r3]
+ add r1, r1, #0x1
+ add r0, r0, r3
+ cmp r1, r2
+ blt _020050D8
+_020050E6:
+ add r1, r2, #0x0
+ blx _s32_div_f
+ ldr r1, [sp, #0x8]
+ strh r0, [r1, #0x0]
+ mov r0, #0x0
+ ldrb r1, [r7, #0x0]
+ add r2, r0, #0x0
+ cmp r1, #0x0
+ ble _02005108
+_020050FA:
+ sub r3, r4, r2
+ lsl r3, r3, #0x1
+ ldrsh r3, [r6, r3]
+ add r2, r2, #0x1
+ add r0, r0, r3
+ cmp r2, r1
+ blt _020050FA
+_02005108:
+ blx _s32_div_f
+ ldr r1, [sp, #0x4]
+ sub r4, r4, #0x1
+ strh r0, [r1, #0x0]
+ ldr r0, [sp, #0x8]
+ ldrb r2, [r7, #0x0]
+ sub r0, r0, #0x2
+ str r0, [sp, #0x8]
+ add r0, r1, #0x0
+ sub r0, r0, #0x2
+ str r0, [sp, #0x4]
+ sub r0, r2, #0x1
+ cmp r4, r0
+ bge _020050D0
+_02005126:
+ mov r1, #0x0
+ cmp r2, #0x0
+ ble _0200514A
+ add r0, sp, #0x10
+ mov r4, #0x2
+_02005130:
+ mov r2, #0x0
+ ldrsh r3, [r0, r2]
+ ldr r2, [sp, #0xc]
+ add r1, r1, #0x1
+ strh r3, [r2, #0x0]
+ ldrsh r3, [r0, r4]
+ add r0, r0, #0x4
+ strh r3, [r2, #0x2]
+ add r2, r2, #0x4
+ str r2, [sp, #0xc]
+ ldrb r2, [r7, #0x0]
+ cmp r1, r2
+ blt _02005130
+_0200514A:
+ ldr r1, [sp, #0x0]
+ add r0, r5, #0x0
+ blx DC_FlushRange
+ ldr r1, [sp, #0x0]
+ add r0, r6, #0x0
+ blx DC_FlushRange
+_0200515A:
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005160
+FUN_02005160: ; 0x02005160
+ ldr r3, _02005168 ; =FUN_020C1148
+ add r1, r0, #0x0
+ mov r0, #0x7
+ bx r3
+ .balign 4
+_02005168: .word FUN_020C1148
+
+ thumb_func_start FUN_0200516C
+FUN_0200516C: ; 0x0200516C
+ push {r3, lr}
+ cmp r0, #0x0
+ bne _02005180
+ ldr r0, _020051A4 ; =0x000007FF
+ bl FUN_02005160
+ mov r0, #0x0
+ bl FUN_02004CA4
+ b _0200519C
+_02005180:
+ cmp r0, #0x1
+ ldr r0, _020051A8 ; =0x00007FFF
+ bne _02005192
+ bl FUN_02005160
+ mov r0, #0x1e
+ bl FUN_02004C80
+ b _0200519C
+_02005192:
+ bl FUN_02005160
+ mov r0, #0xf
+ bl FUN_02004C80
+_0200519C:
+ bl FUN_02004C78
+ pop {r3, pc}
+ nop
+_020051A4: .word 0x000007FF
+_020051A8: .word 0x00007FFF
+
+ thumb_func_start FUN_020051AC
+FUN_020051AC: ; 0x020051AC
+ push {r3, lr}
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _020051E0
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ mov r1, #0x0
+ mvn r1, r1
+ cmp r0, r1
+ beq _020051E0
+ bl FUN_02004124
+ ldr r1, _020051E8 ; =0x0000047E
+ cmp r0, r1
+ beq _020051E0
+ bl FUN_02005454
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl FUN_020047C8
+ pop {r3, pc}
+_020051E0:
+ bl FUN_0200541C
+ pop {r3, pc}
+ nop
+_020051E8: .word 0x0000047E
+
+ thumb_func_start FUN_020051EC
+FUN_020051EC: ; 0x020051EC
+ ldr r3, _020051F0 ; =FUN_020C1180
+ bx r3
+ .balign 4
+_020051F0: .word FUN_020C1180
+
+ thumb_func_start FUN_020051F4
+FUN_020051F4: ; 0x020051F4
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r4, r0, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_0200526C
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200521C
+FUN_0200521C: ; 0x0200521C
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ add r4, r0, #0x0
+ bl FUN_02004018
+ add r6, r0, #0x0
+ cmp r4, #0x7
+ bne _0200523E
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_02005288
+ add r4, r0, #0x0
+ b _02005258
+_0200523E:
+ cmp r4, #0x1
+ bne _02005250
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r6, #0x0
+ bl FUN_020052B8
+ add r4, r0, #0x0
+ b _02005258
+_02005250:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02005258:
+ mov r0, #0x0
+ bl FUN_02004DBC
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200526C
+ add r0, r4, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200526C
+FUN_0200526C: ; 0x0200526C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02004110
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ mov r0, #0x1
+ bl FUN_02003CE8
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005288
+FUN_02005288: ; 0x02005288
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x3
+ add r4, r2, #0x0
+ bl FUN_02004748
+ bl FUN_02003F64
+ add r0, r5, #0x0
+ bl FUN_02003F90
+ mov r0, #0x1a
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r4, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_020052B8
+FUN_020052B8: ; 0x020052B8
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x12
+ add r6, r2, #0x0
+ bl FUN_02003D38
+ mov r0, #0x1f
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_02003FF4
+ bl FUN_020048EC
+ bl FUN_02004900
+ add r1, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_020045C4
+ add r0, r6, #0x0
+ bl FUN_02003FF4
+ add r6, r0, #0x0
+ ldrh r0, [r4, #0x0]
+ bl FUN_02004900
+ mov r1, #0x0
+ mvn r1, r1
+ add r2, r0, #0x0
+ add r0, r6, #0x0
+ add r3, r1, #0x0
+ str r5, [sp, #0x0]
+ blx FUN_020C3910
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005308
+FUN_02005308: ; 0x02005308
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ cmp r0, #0x4
+ beq _02005318
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02005318:
+ add r0, r5, #0x0
+ bl FUN_020048D0
+ cmp r0, #0x7
+ beq _0200532A
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_0200532A:
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02003FA8
+ mov r0, #0x7
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02004110
+ mov r0, #0x1
+ bl FUN_02003CE8
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005350
+FUN_02005350: ; 0x02005350
+ push {r4, lr}
+ add r4, r0, #0x0
+ blx FUN_020C0FDC
+ add r0, r4, #0x0
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _0200536E
+ bl FUN_02004018
+ bl FUN_02003FF4
+ blx FUN_020C0F68
+_0200536E:
+ bl FUN_02005374
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005374
+FUN_02005374: ; 0x02005374
+ push {r3, lr}
+ mov r0, #0x0
+ bl FUN_02004110
+ mov r0, #0x0
+ bl FUN_02004130
+ mov r0, #0x0
+ bl FUN_02003CE8
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200538C
+FUN_0200538C: ; 0x0200538C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _020053C8
+ bl FUN_02004018
+ add r7, r0, #0x0
+ cmp r4, #0x0
+ bne _020053B2
+ mov r1, #0x0
+ add r2, r1, #0x0
+ bl FUN_02004828
+_020053B2:
+ add r0, r7, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ bl FUN_02004828
+ add r0, r5, #0x0
+ bl FUN_02004D74
+ mov r0, #0x3
+ bl FUN_02003CE8
+_020053C8:
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020053CC
+FUN_020053CC: ; 0x020053CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02004124
+ bl FUN_020048D0
+ add r6, r0, #0x0
+ cmp r6, #0xff
+ beq _02005402
+ bl FUN_02005404
+ cmp r0, #0x0
+ bne _020053FC
+ add r0, r6, #0x0
+ bl FUN_02004018
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02004828
+ add r0, r4, #0x0
+ bl FUN_02004D74
+_020053FC:
+ mov r0, #0x4
+ bl FUN_02003CE8
+_02005402:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005404
+FUN_02005404: ; 0x02005404
+ push {r3, lr}
+ mov r0, #0x6
+ bl FUN_02003D38
+ ldrh r0, [r0, #0x0]
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005410
+FUN_02005410: ; 0x02005410
+ push {r3, lr}
+ bl FUN_020048D0
+ bl FUN_020048BC
+ pop {r3, pc}
+
+ thumb_func_start FUN_0200541C
+FUN_0200541C: ; 0x0200541C
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x0
+ blx FUN_020C0F9C
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005440
+ mov r0, #0xe
+ bl FUN_02004AAC
+_02005440:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _0200544C
+ mov r0, #0xf
+ bl FUN_02004AAC
+_0200544C:
+ mov r0, #0x0
+ bl FUN_02003CE8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005454
+FUN_02005454: ; 0x02005454
+ push {r3-r7, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r7, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x7
+ bl FUN_02003FF4
+ mov r1, #0x0
+ blx FUN_020C10A4
+ bl FUN_02005374
+ mov r5, #0x0
+ add r4, r5, #0x0
+_0200547A:
+ add r0, r5, #0x3
+ add r1, r4, #0x0
+ bl FUN_020054F8
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ blt _0200547A
+ mov r0, #0x0
+ bl FUN_02005614
+ ldrb r0, [r7, #0x0]
+ cmp r0, #0x1
+ bne _0200549A
+ mov r0, #0xe
+ bl FUN_02004AAC
+_0200549A:
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _020054A6
+ mov r0, #0xf
+ bl FUN_02004AAC
+_020054A6:
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020054A8
+FUN_020054A8: ; 0x020054A8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_020054C8
+ add r6, r0, #0x0
+ ldr r1, _020054C4 ; =0x0000FFFF
+ add r0, r5, #0x0
+ add r2, r4, #0x0
+ bl FUN_02005530
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ nop
+_020054C4: .word 0x0000FFFF
+
+ thumb_func_start FUN_020054C8
+FUN_020054C8: ; 0x020054C8
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ add r4, r0, #0x0
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r6, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020054F0
+FUN_020054F0: ; 0x020054F0
+ ldr r3, _020054F4 ; =FUN_020C0FDC
+ bx r3
+ .balign 4
+_020054F4: .word FUN_020C0FDC
+
+ thumb_func_start FUN_020054F8
+FUN_020054F8: ; 0x020054F8
+ push {r4, lr}
+ add r4, r1, #0x0
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C10A4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005508
+FUN_02005508: ; 0x02005508
+ push {r3, lr}
+ bl FUN_020048D0
+ bl FUN_020048BC
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005514
+FUN_02005514: ; 0x02005514
+ push {r4, lr}
+ mov r4, #0x0
+_02005518:
+ add r0, r4, #0x3
+ bl FUN_020048BC
+ cmp r0, #0x1
+ bne _02005526
+ mov r0, #0x1
+ pop {r4, pc}
+_02005526:
+ add r4, r4, #0x1
+ cmp r4, #0x4
+ blt _02005518
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005530
+FUN_02005530: ; 0x02005530
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ bl FUN_020048D0
+ bl FUN_02004018
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ add r2, r4, #0x0
+ blx FUN_020C0E7C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200554C
+FUN_0200554C: ; 0x0200554C
+ push {r3-r7, lr}
+ add r6, r0, #0x0
+ mov r0, #0x3
+ bl FUN_02004018
+ ldr r7, _02005574 ; =0x0000FFFF
+ add r4, r0, #0x0
+ mov r5, #0x0
+_0200555C:
+ add r0, r4, r5
+ bl FUN_02003FF4
+ add r1, r7, #0x0
+ add r2, r6, #0x0
+ blx FUN_020C0E7C
+ add r5, r5, #0x1
+ cmp r5, #0x4
+ blt _0200555C
+ pop {r3-r7, pc}
+ nop
+_02005574: .word 0x0000FFFF
+
+ thumb_func_start FUN_02005578
+FUN_02005578: ; 0x02005578
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x11
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x23
+ bl FUN_02003D38
+ ldr r1, _02005610 ; =0x000001B9
+ cmp r5, r1
+ beq _0200559C
+ add r1, #0x36
+ cmp r5, r1
+ bhi _0200559A
+ cmp r5, #0x0
+ bne _0200559C
+_0200559A:
+ mov r5, #0x1
+_0200559C:
+ ldr r1, _02005610 ; =0x000001B9
+ cmp r5, r1
+ bne _020055BC
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ mov r2, #0x7f
+ add r3, r1, #0x0
+ bl FUN_02005D48
+ cmp r0, #0x1
+ bne _020055BC
+ mov r0, #0x0
+ bl FUN_02005E80
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_020055BC:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _020055E8
+ mov r0, #0x0
+ bl FUN_02005614
+ mov r0, #0x1
+ bl FUN_02003FF4
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ sub r1, r1, #0x3
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ blx FUN_020C3910
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x1
+ bl FUN_02004858
+ b _02005606
+_020055E8:
+ mov r0, #0x8
+ bl FUN_02003FF4
+ mov r1, #0x2
+ str r1, [sp, #0x0]
+ sub r1, r1, #0x3
+ add r2, r5, #0x0
+ add r3, r1, #0x0
+ blx FUN_020C3910
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x8
+ bl FUN_02004858
+_02005606:
+ mov r0, #0x0
+ bl FUN_02005E80
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02005610: .word 0x000001B9
+
+ thumb_func_start FUN_02005614
+FUN_02005614: ; 0x02005614
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xe
+ bl FUN_02003D38
+ mov r0, #0x1
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C10A4
+ mov r0, #0x8
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C10A4
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02005658
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005658:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _0200566A
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_0200566A:
+ bl FUN_02005DFC
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005670
+FUN_02005670: ; 0x02005670
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0xe
+ bl FUN_02003D38
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005696
+ mov r0, #0xe
+ bl FUN_02004ABC
+ pop {r3-r5, pc}
+_02005696:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _020056A4
+ mov r0, #0xf
+ bl FUN_02004ABC
+ pop {r3-r5, pc}
+_020056A4:
+ mov r0, #0x0
+ bl FUN_020048BC
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_020056AC
+FUN_020056AC: ; 0x020056AC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x4]
+ mov r0, #0xf
+ str r1, [sp, #0x8]
+ add r5, r2, #0x0
+ add r6, r3, #0x0
+ ldr r7, [sp, #0x38]
+ bl FUN_02003D38
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ bl FUN_02003D38
+ str r0, [sp, #0x10]
+ mov r0, #0x11
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x1d
+ bl FUN_02003D38
+ str r0, [sp, #0xc]
+ mov r0, #0x23
+ bl FUN_02003D38
+ lsr r0, r5, #0x1f
+ add r0, r5, r0
+ asr r0, r0, #0x1
+ str r0, [sp, #0x1c]
+ add r0, #0x40
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ str r0, [sp, #0x18]
+ sub r0, #0x1e
+ str r0, [sp, #0x18]
+ cmp r0, #0x0
+ bgt _020056FC
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+_020056FC:
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005714
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005714:
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005728
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_02005728:
+ ldr r4, [sp, #0x8]
+ ldr r0, _02005AB4 ; =0x000001B9
+ add r1, r4, #0x0
+ cmp r1, r0
+ beq _0200573E
+ add r0, #0x36
+ cmp r1, r0
+ bhi _0200573C
+ add r0, r4, #0x0
+ bne _0200573E
+_0200573C:
+ mov r4, #0x1
+_0200573E:
+ ldr r0, _02005AB4 ; =0x000001B9
+ ldr r1, [sp, #0x8]
+ cmp r1, r0
+ bne _020057B4
+ ldr r1, [sp, #0x4]
+ cmp r1, #0xc
+ bhi _020057AE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02005758: ; jump table (using 16-bit offset)
+ .short _02005772 - _02005758 - 2; case 0
+ .short _02005772 - _02005758 - 2; case 1
+ .short _02005772 - _02005758 - 2; case 2
+ .short _020057AE - _02005758 - 2; case 3
+ .short _020057AE - _02005758 - 2; case 4
+ .short _02005772 - _02005758 - 2; case 5
+ .short _020057AE - _02005758 - 2; case 6
+ .short _020057AE - _02005758 - 2; case 7
+ .short _020057AE - _02005758 - 2; case 8
+ .short _020057AE - _02005758 - 2; case 9
+ .short _020057AE - _02005758 - 2; case 10
+ .short _02005772 - _02005758 - 2; case 11
+ .short _02005772 - _02005758 - 2; case 12
+_02005772:
+ bl FUN_02005578
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _02005794
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ b _020057A8
+_02005794:
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xe
+ add r1, r6, #0x0
+ bl FUN_02004AF8
+_020057A8:
+ add sp, #0x20
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_020057AE:
+ mov r0, #0x1
+ bl FUN_02005E80
+_020057B4:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0xe
+ bls _020057BC
+ b _02005AC2
+_020057BC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020057C8: ; jump table (using 16-bit offset)
+ .short _020057E6 - _020057C8 - 2; case 0
+ .short _02005802 - _020057C8 - 2; case 1
+ .short _02005826 - _020057C8 - 2; case 2
+ .short _02005868 - _020057C8 - 2; case 3
+ .short _020058B2 - _020057C8 - 2; case 4
+ .short _02005900 - _020057C8 - 2; case 5
+ .short _02005928 - _020057C8 - 2; case 6
+ .short _0200596C - _020057C8 - 2; case 7
+ .short _0200599C - _020057C8 - 2; case 8
+ .short _020059CA - _020057C8 - 2; case 9
+ .short _020059FE - _020057C8 - 2; case 10
+ .short _02005A2E - _020057C8 - 2; case 11
+ .short _02005A56 - _020057C8 - 2; case 12
+ .short _02005A86 - _020057C8 - 2; case 13
+ .short _02005ABC - _020057C8 - 2; case 14
+_020057E6:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ b _02005AC2
+_02005802:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x14
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ b _02005AC2
+_02005826:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x40
+ bl FUN_02004D20
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_02005868:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1e
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0xc0
+ bl FUN_02004D20
+ add r0, r4, #0x0
+ mov r1, #0x10
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_020058B2:
+ mov r0, #0xe
+ bl FUN_02004984
+ ldr r2, [sp, #0x1c]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0xe
+ str r7, [sp, #0x0]
+ bl FUN_02004B30
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xf
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r1, #0x86
+ mov r0, #0xe
+ lsl r1, r1, #0x8
+ bl FUN_02004AE4
+ mov r1, #0x3f
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r4, #0x0
+ mvn r1, r1
+ str r7, [sp, #0x0]
+ bl FUN_02005BF8
+ mov r1, #0x86
+ mov r0, #0xf
+ lsl r1, r1, #0x8
+ bl FUN_02004AE4
+ b _02005AC2
+_02005900:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0xe1
+ bl FUN_02004D20
+ b _02005AC2
+_02005928:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x2c
+ bl FUN_02004D20
+ mov r1, #0x3f
+ add r0, r4, #0x0
+ mvn r1, r1
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02005AC8
+ b _02005AC2
+_0200596C:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0xb
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x81
+ bl FUN_02004D20
+ b _02005AC2
+_0200599C:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x3c
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ mov r2, #0x3c
+ bl FUN_02004D20
+ b _02005AC2
+_020059CA:
+ mov r0, #0xe
+ bl FUN_02004984
+ ldr r2, [sp, #0x1c]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ mov r3, #0xe
+ str r7, [sp, #0x0]
+ bl FUN_02004B30
+ ldr r1, [sp, #0x1c]
+ mov r0, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02004ACC
+ mov r0, #0xd
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r1, #0x1a
+ mov r0, #0xe
+ lsl r1, r1, #0xa
+ bl FUN_02004AE4
+ b _02005AC2
+_020059FE:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x64
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x2d
+ bl FUN_02004D20
+ b _02005AC2
+_02005A2E:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x61
+ bl FUN_02004D20
+ b _02005AC2
+_02005A56:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x1
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ add r0, r4, #0x0
+ mov r1, #0x1
+ add r2, r6, #0x0
+ bl FUN_02005AC8
+ mov r0, #0x14
+ add r1, r7, #0x0
+ bl FUN_02005AE0
+ mov r0, #0x1
+ add r2, r0, #0x0
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ sub r2, #0x61
+ bl FUN_02004D20
+ b _02005AC2
+_02005A86:
+ add r0, r4, #0x0
+ bl FUN_02005578
+ add r0, r4, #0x0
+ mov r1, #0x1
+ mov r2, #0x7f
+ bl FUN_02005AC8
+ add r0, r4, #0x0
+ mov r1, #0x14
+ bl FUN_02005BC8
+ ldr r1, _02005AB8 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r5, #0x0
+ bl FUN_02004D4C
+ mov r0, #0x8
+ add r1, r6, #0x0
+ mov r2, #0x0
+ bl FUN_02004828
+ b _02005AC2
+ .balign 4
+_02005AB4: .word 0x000001B9
+_02005AB8: .word 0x0000FFFF
+_02005ABC:
+ add r0, r4, #0x0
+ bl FUN_02005578
+_02005AC2:
+ mov r0, #0x1
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02005AC8
+FUN_02005AC8: ; 0x02005AC8
+ push {r3-r5, lr}
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r0, r4, #0x0
+ add r1, r2, #0x0
+ bl FUN_0200483C
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_02004858
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005AE0
+FUN_02005AE0: ; 0x02005AE0
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ mov r0, #0x22
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ bl FUN_02005BA0
+ add r0, r4, #0x0
+ mov r1, #0x8
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02005B04
+ bl ErrorHandling
+ pop {r4-r6, pc}
+_02005B04:
+ mov r2, #0x0
+ strb r2, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ strb r2, [r4, #0x2]
+ strb r2, [r4, #0x3]
+ strb r2, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ ldr r0, _02005B28 ; =FUN_02005B2C
+ add r1, r4, #0x0
+ str r5, [r4, #0x0]
+ bl FUN_0200CA44
+ str r0, [r4, #0x4]
+ str r0, [r6, #0x0]
+ pop {r4-r6, pc}
+ nop
+_02005B28: .word FUN_02005B2C
+
+ thumb_func_start FUN_02005B2C
+FUN_02005B2C: ; 0x02005B2C
+ push {r4-r6, lr}
+ mov r0, #0xf
+ add r5, r1, #0x0
+ bl FUN_02003D38
+ add r6, r0, #0x0
+ mov r0, #0x10
+ bl FUN_02003D38
+ ldr r2, [r5, #0x0]
+ add r4, r0, #0x0
+ cmp r2, #0xa
+ bne _02005B58
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FUN_02004828
+ ldr r2, [r5, #0x0]
+ mov r0, #0x8
+ mov r1, #0x0
+ bl FUN_02004828
+_02005B58:
+ ldr r0, [r5, #0x0]
+ sub r0, r0, #0x1
+ str r0, [r5, #0x0]
+ bl FUN_02005670
+ cmp r0, #0x0
+ bne _02005B6A
+ mov r0, #0x0
+ str r0, [r5, #0x0]
+_02005B6A:
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bgt _02005B9E
+ mov r0, #0x0
+ bl FUN_02005614
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x1
+ bne _02005B88
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005B88:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ bne _02005B9A
+ mov r0, #0xf
+ bl FUN_02004C3C
+ mov r0, #0xf
+ bl FUN_02004A04
+_02005B9A:
+ bl FUN_02005BA0
+_02005B9E:
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02005BA0
+FUN_02005BA0: ; 0x02005BA0
+ push {r3-r5, lr}
+ mov r0, #0x22
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02005BC2
+ bl FUN_0201B6C8
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ bl FUN_0200CAB4
+ add r0, r5, #0x0
+ bl FUN_02016A18
+_02005BC2:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005BC8
+FUN_02005BC8: ; 0x02005BC8
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x11
+ add r4, r1, #0x0
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ add r0, r1, #0x0
+ bl FUN_02005E80
+ add r0, r5, #0x0
+ bl FUN_02005578
+ add r5, r0, #0x0
+ ldr r1, _02005BF4 ; =0x0000FFFF
+ mov r0, #0x8
+ add r2, r4, #0x0
+ bl FUN_02004D20
+ add r0, r5, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02005BF4: .word 0x0000FFFF
+
+ thumb_func_start FUN_02005BF8
+FUN_02005BF8: ; 0x02005BF8
+ push {r3-r6, lr}
+ sub sp, #0x4
+ add r5, r0, #0x0
+ mov r0, #0x11
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02003D38
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0xf
+ bl FUN_02004984
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0x0
+ str r0, [sp, #0x0]
+ add r0, r5, #0x0
+ add r2, r6, #0x0
+ mov r3, #0xf
+ bl FUN_02004B30
+ add sp, #0x4
+ pop {r3-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005C28
+FUN_02005C28: ; 0x02005C28
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ bl FUN_020048F4
+ add r0, r5, #0x0
+ bl FUN_02005CEC
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _02005C48
+ mov r1, #0x1
+ bl FUN_020047C8
+_02005C48:
+ mov r0, #0x1c
+ bl FUN_02003D38
+ bl FUN_02003F3C
+ add r0, r5, #0x0
+ mov r1, #0x3
+ bl FUN_02003FA8
+ mov r0, #0x2
+ bl FUN_02003FF4
+ add r1, r5, #0x0
+ blx FUN_020C3980
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ mov r1, #0x2
+ bl FUN_02004858
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005C74
+FUN_02005C74: ; 0x02005C74
+ push {r4, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_020048BC
+ cmp r0, #0x0
+ beq _02005C8C
+ mov r0, #0x1
+ pop {r4, pc}
+_02005C8C:
+ ldrh r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _02005C9A
+ sub r0, r0, #0x1
+ strh r0, [r4, #0x0]
+ mov r0, #0x1
+ pop {r4, pc}
+_02005C9A:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005CA0
+FUN_02005CA0: ; 0x02005CA0
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x2
+ bl FUN_02003FF4
+ add r1, r4, #0x0
+ blx FUN_020C10A4
+ mov r0, #0x6
+ bl FUN_02004748
+ bl FUN_02003F64
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005CBC
+FUN_02005CBC: ; 0x02005CBC
+ push {r3, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ bl FUN_02005C74
+ cmp r0, #0x1
+ bne _02005CD0
+ mov r0, #0x1
+ pop {r3, pc}
+_02005CD0:
+ mov r0, #0x0
+ bl FUN_02005CA0
+ bl FUN_02004124
+ bl FUN_020048D0
+ cmp r0, #0xff
+ beq _02005CE8
+ mov r1, #0x0
+ bl FUN_020047C8
+_02005CE8:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005CEC
+FUN_02005CEC: ; 0x02005CEC
+ push {r3, lr}
+ mov r0, #0xd
+ bl FUN_02003D38
+ mov r1, #0xf
+ strh r1, [r0, #0x0]
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005CFC
+FUN_02005CFC: ; 0x02005CFC
+ push {r3, lr}
+ mov r0, #0x1d
+ bl FUN_02003D38
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x1
+ bne _02005D1C
+ mov r0, #0xe
+ bl FUN_02004ABC
+ cmp r0, #0x0
+ bne _02005D1C
+ bl FUN_02005DFC
+ mov r0, #0x1
+ pop {r3, pc}
+_02005D1C:
+ mov r0, #0x0
+ pop {r3, pc}
+
+ thumb_func_start FUN_02005D20
+FUN_02005D20: ; 0x02005D20
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ mov r0, #0x1e
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ bl FUN_02029F04
+ cmp r0, #0x0
+ bne _02005D3A
+ mov r0, #0x0
+ pop {r3-r5, pc}
+_02005D3A:
+ ldrb r0, [r4, #0x0]
+ cmp r0, #0x1
+ beq _02005D44
+ mov r0, #0x1
+ pop {r3-r5, pc}
+_02005D44:
+ mov r0, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02005D48
+FUN_02005D48: ; 0x02005D48
+ push {r3-r7, lr}
+ sub sp, #0x30
+ add r6, r0, #0x0
+ add r5, r2, #0x0
+ add r7, r3, #0x0
+ bl FUN_02004DB4
+ str r0, [sp, #0x0]
+ mov r0, #0x1d
+ bl FUN_02003D38
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ bl FUN_02005D20
+ cmp r0, #0x0
+ bne _02005D70
+ add sp, #0x30
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02005D70:
+ mov r0, #0x0
+ bl FUN_02005614
+ bl FUN_02005DFC
+ mov r0, #0xe
+ bl FUN_02004984
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x13
+ sub r1, r1, r2
+ mov r0, #0x13
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #0x0
+ bl FUN_02029F10
+ add r1, r0, #0x0
+ ldr r0, [sp, #0x0]
+ bl FUN_02029F14
+ mov r0, #0xe
+ bl FUN_02004930
+ str r0, [sp, #0x8]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ bl FUN_02004DB4
+ str r0, [sp, #0x10]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ mov r0, #0x7d
+ lsl r0, r0, #0x4
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ add r0, r4, r0
+ str r0, [sp, #0x28]
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #0x1
+ add r0, #0x40
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x8
+ mov r1, #0xe
+ str r5, [sp, #0x24]
+ bl FUN_02004A6C
+ add r4, r0, #0x0
+ mov r0, #0xe
+ add r1, r5, #0x0
+ bl FUN_02004AF8
+ ldr r0, [sp, #0x4]
+ mov r1, #0x1
+ strb r1, [r0, #0x0]
+ mov r0, #0x0
+ bl FUN_02005E80
+ add r0, r4, #0x0
+ add sp, #0x30
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005DFC
+FUN_02005DFC: ; 0x02005DFC
+ push {r3-r5, lr}
+ mov r0, #0xf
+ bl FUN_02003D38
+ add r5, r0, #0x0
+ mov r0, #0x1d
+ bl FUN_02003D38
+ add r4, r0, #0x0
+ ldrb r0, [r5, #0x0]
+ cmp r0, #0x1
+ bne _02005E20
+ mov r0, #0xe
+ bl FUN_02004C3C
+ mov r0, #0xe
+ bl FUN_02004A04
+_02005E20:
+ mov r0, #0x0
+ strb r0, [r4, #0x0]
+ pop {r3-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E28
+FUN_02005E28: ; 0x02005E28
+ push {lr}
+ sub sp, #0x1c
+ mov r0, #0x2
+ str r0, [sp, #0x0]
+ bl FUN_02004DB4
+ mov r1, #0x7d
+ str r0, [sp, #0x4]
+ lsl r1, r1, #0x4
+ mov r0, #0x1f
+ str r1, [sp, #0x8]
+ tst r0, r1
+ beq _02005E48
+ mov r0, #0x1f
+ bic r1, r0
+ str r1, [sp, #0x8]
+_02005E48:
+ ldr r0, _02005E60 ; =0x00004174
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ add r0, sp, #0x0
+ bl FUN_02004914
+ add sp, #0x1c
+ pop {pc}
+ nop
+_02005E60: .word 0x00004174
+
+ thumb_func_start FUN_02005E64
+FUN_02005E64: ; 0x02005E64
+ ldr r3, _02005E68 ; =FUN_0200491C
+ bx r3
+ .balign 4
+_02005E68: .word FUN_0200491C
+
+ thumb_func_start FUN_02005E6C
+FUN_02005E6C: ; 0x02005E6C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02004DB4
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ bl FUN_02029F4C
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E80
+FUN_02005E80: ; 0x02005E80
+ push {r4, lr}
+ add r4, r0, #0x0
+ mov r0, #0x1e
+ bl FUN_02003D38
+ strb r4, [r0, #0x0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02005E90
+FUN_02005E90: ; 0x02005E90
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ mov r0, #0x23
+ add r7, r1, #0x0
+ add r4, r2, #0x0
+ add r6, r3, #0x0
+ bl FUN_02003D38
+ cmp r5, #0x0
+ bne _02005EB2
+ ldr r0, [r0, #0x0]
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02005D48
+ b _02005EBE
+_02005EB2:
+ add r0, r5, #0x0
+ add r1, r7, #0x0
+ add r2, r4, #0x0
+ add r3, r6, #0x0
+ bl FUN_02005D48
+_02005EBE:
+ cmp r0, #0x0
+ bne _02005ED8
+ mov r0, #0x1
+ bl FUN_02005E80
+ mov r0, #0xb
+ str r0, [sp, #0x0]
+ ldr r1, _02005EDC ; =0x000001B9
+ mov r0, #0x0
+ add r2, r6, #0x0
+ add r3, r4, #0x0
+ bl FUN_020056AC
+_02005ED8:
+ pop {r3-r7, pc}
+ nop
+_02005EDC: .word 0x000001B9
+
+ thumb_func_start FUN_02005EE0
+FUN_02005EE0: ; 0x02005EE0
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02029F04
+ cmp r0, #0x0
+ bne _02005EF0
+ mov r0, #0x0
+ pop {r4, pc}
+_02005EF0:
+ add r0, r4, #0x0
+ bl FUN_02029F10
+ mov r1, #0xf
+ ldrsb r0, [r0, r1]
+ sub r1, #0x2d
+ cmp r0, r1
+ bge _02005F04
+ mov r0, #0x1
+ pop {r4, pc}
+_02005F04:
+ cmp r0, #0x1e
+ blt _02005F10
+ cmp r0, #0x80
+ bge _02005F10
+ mov r0, #0x2
+ pop {r4, pc}
+_02005F10:
+ mov r0, #0x0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F14
+FUN_02005F14: ; 0x02005F14
+ cmp r0, #0xb
+ bgt _02005F2E
+ bge _02005F32
+ cmp r0, #0x5
+ bgt _02005F36
+ cmp r0, #0x0
+ blt _02005F36
+ beq _02005F32
+ cmp r0, #0x1
+ beq _02005F32
+ cmp r0, #0x5
+ beq _02005F32
+ b _02005F36
+_02005F2E:
+ cmp r0, #0xc
+ bne _02005F36
+_02005F32:
+ mov r0, #0x1
+ bx lr
+_02005F36:
+ mov r0, #0x0
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02005F3C
+FUN_02005F3C: ; 0x02005F3C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ beq _02005F4A
+ bl ErrorHandling
+_02005F4A:
+ ldr r1, [r4, #0x0]
+ mov r0, #0x0
+ blx FS_UnloadOverlay
+ cmp r0, #0x1
+ beq _02005F5A
+ bl ErrorHandling
+_02005F5A:
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F60
+FUN_02005F60: ; 0x02005F60
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02005F90
+ bl FUN_0200610C
+ mov r2, #0x0
+ add r3, r0, #0x0
+_02005F70:
+ ldr r1, [r3, #0x4]
+ cmp r1, #0x1
+ bne _02005F86
+ ldr r1, [r3, #0x0]
+ cmp r4, r1
+ bne _02005F86
+ lsl r1, r2, #0x3
+ add r0, r0, r1
+ bl FUN_02005F3C
+ pop {r4, pc}
+_02005F86:
+ add r2, r2, #0x1
+ add r3, #0x8
+ cmp r2, #0x8
+ blt _02005F70
+ pop {r4, pc}
+
+ thumb_func_start FUN_02005F90
+FUN_02005F90: ; 0x02005F90
+ push {lr}
+ sub sp, #0x2c
+ add r2, r0, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x1
+ beq _02005FA6
+ bl ErrorHandling
+_02005FA6:
+ mov r0, #0x2
+ ldr r2, [sp, #0x4]
+ lsl r0, r0, #0x18
+ cmp r2, r0
+ bhi _02005FBC
+ lsr r0, r0, #0x1
+ cmp r2, r0
+ blo _02005FBC
+ add sp, #0x2c
+ mov r0, #0x1
+ pop {pc}
+_02005FBC:
+ mov r0, #0x1
+ ldr r1, _02005FD8 ; =0x027E0000
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ cmp r2, r0
+ bhi _02005FD2
+ cmp r2, r1
+ blo _02005FD2
+ add sp, #0x2c
+ mov r0, #0x2
+ pop {pc}
+_02005FD2:
+ mov r0, #0x0
+ add sp, #0x2c
+ pop {pc}
+ .balign 4
+_02005FD8: .word 0x027E0000
+
+ thumb_func_start FUN_02005FDC
+FUN_02005FDC: ; 0x02005FDC
+ push {r3-r7, lr}
+ add r4, r1, #0x0
+ mov r1, #0x0
+ mvn r1, r1
+ add r5, r0, #0x0
+ str r1, [sp, #0x0]
+ bl FUN_02006090
+ cmp r0, #0x0
+ bne _02005FF4
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02005FF4:
+ add r0, r5, #0x0
+ bl FUN_02005F90
+ add r7, r0, #0x0
+ bl FUN_0200610C
+ add r3, r0, #0x0
+ mov r6, #0x0
+ add r1, r3, #0x0
+_02006006:
+ ldr r0, [r1, #0x4]
+ cmp r0, #0x0
+ bne _02006018
+ lsl r1, r6, #0x3
+ add r2, r3, r1
+ mov r0, #0x1
+ str r0, [r2, #0x4]
+ str r5, [r3, r1]
+ b _02006020
+_02006018:
+ add r6, r6, #0x1
+ add r1, #0x8
+ cmp r6, #0x8
+ blt _02006006
+_02006020:
+ cmp r6, #0x8
+ blt _0200602C
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200602C:
+ sub r6, r7, #0x1
+ cmp r6, #0x1
+ bhi _0200603C
+ mov r0, #0x0
+ mvn r0, r0
+ blx FS_SetDefaultDMA
+ str r0, [sp, #0x0]
+_0200603C:
+ cmp r4, #0x0
+ beq _0200604A
+ cmp r4, #0x1
+ beq _02006056
+ cmp r4, #0x2
+ beq _02006062
+ b _0200606E
+_0200604A:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_02006168
+ add r4, r0, #0x0
+ b _02006076
+_02006056:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_02006170
+ add r4, r0, #0x0
+ b _02006076
+_02006062:
+ mov r0, #0x0
+ add r1, r5, #0x0
+ bl FUN_020061A8
+ add r4, r0, #0x0
+ b _02006076
+_0200606E:
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02006076:
+ cmp r6, #0x1
+ bhi _02006080
+ ldr r0, [sp, #0x0]
+ blx FS_SetDefaultDMA
+_02006080:
+ cmp r4, #0x0
+ bne _0200608C
+ bl ErrorHandling
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0200608C:
+ mov r0, #0x1
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02006090
+FUN_02006090: ; 0x02006090
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r1, sp, #0xc
+ add r2, sp, #0x8
+ add r4, r0, #0x0
+ bl FUN_02006130
+ cmp r0, #0x0
+ bne _020060A8
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020060A8:
+ add r0, r4, #0x0
+ bl FUN_02005F90
+ bl FUN_0200610C
+ add r5, r0, #0x0
+ mov r4, #0x0
+ add r6, sp, #0x4
+ add r7, sp, #0x0
+_020060BA:
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x1
+ bne _020060FC
+ ldr r0, [r5, #0x0]
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl FUN_02006130
+ cmp r0, #0x1
+ bne _020060FC
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0xc]
+ cmp r2, r1
+ blo _020060DC
+ ldr r0, [sp, #0x0]
+ cmp r2, r0
+ blo _020060F2
+_020060DC:
+ ldr r3, [sp, #0x8]
+ cmp r3, r1
+ bls _020060E8
+ ldr r0, [sp, #0x0]
+ cmp r3, r0
+ bls _020060F2
+_020060E8:
+ cmp r2, r1
+ bhi _020060FC
+ ldr r0, [sp, #0x0]
+ cmp r3, r0
+ blo _020060FC
+_020060F2:
+ bl ErrorHandling
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_020060FC:
+ add r4, r4, #0x1
+ add r5, #0x8
+ cmp r4, #0x8
+ blt _020060BA
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200610C
+FUN_0200610C: ; 0x0200610C
+ cmp r0, #0x0
+ beq _02006118
+ cmp r0, #0x1
+ beq _0200611C
+ cmp r0, #0x2
+ beq _02006120
+_02006118:
+ ldr r0, _02006124 ; =0x021C45B0
+ bx lr
+_0200611C:
+ ldr r0, _02006128 ; =0x021C45F0
+ bx lr
+_02006120:
+ ldr r0, _0200612C ; =0x021C4630
+ bx lr
+ .balign 4
+_02006124: .word 0x021C45B0
+_02006128: .word 0x021C45F0
+_0200612C: .word 0x021C4630
+
+ thumb_func_start FUN_02006130
+FUN_02006130: ; 0x02006130
+ push {r4-r5, lr}
+ sub sp, #0x2c
+ add r3, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ add r0, sp, #0x0
+ mov r1, #0x0
+ add r2, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _02006152
+ bl ErrorHandling
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {r4-r5, pc}
+_02006152:
+ ldr r2, [sp, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ add r0, r2, r0
+ str r0, [r4, #0x0]
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {r4-r5, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006168
+FUN_02006168: ; 0x02006168
+ ldr r3, _0200616C ; =FS_LoadOverlay
+ bx r3
+ .balign 4
+_0200616C: .word FS_LoadOverlay
+
+ thumb_func_start FUN_02006170
+FUN_02006170: ; 0x02006170
+ push {lr}
+ sub sp, #0x2c
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ add r0, sp, #0x0
+ add r1, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _0200618A
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {pc}
+_0200618A:
+ add r0, sp, #0x0
+ blx FS_LoadOverlayImage
+ cmp r0, #0x0
+ bne _0200619A
+ add sp, #0x2c
+ mov r0, #0x0
+ pop {pc}
+_0200619A:
+ add r0, sp, #0x0
+ blx FS_StartOverlay
+ mov r0, #0x1
+ add sp, #0x2c
+ pop {pc}
+ .balign 4
+
+ thumb_func_start FUN_020061A8
+FUN_020061A8: ; 0x020061A8
+ push {lr}
+ sub sp, #0x74
+ add r3, r0, #0x0
+ add r2, r1, #0x0
+ add r0, sp, #0x0
+ add r1, r3, #0x0
+ blx FS_LoadOverlayInfo
+ cmp r0, #0x0
+ bne _020061C2
+ add sp, #0x74
+ mov r0, #0x0
+ pop {pc}
+_020061C2:
+ add r0, sp, #0x2c
+ blx FS_InitFile
+ add r0, sp, #0x0
+ add r1, sp, #0x2c
+ blx FS_LoadOverlayImageAsync
+ add r0, sp, #0x2c
+ blx FS_WaitAsync
+ add r0, sp, #0x2c
+ blx FS_CloseFile
+ add r0, sp, #0x0
+ blx FS_StartOverlay
+ mov r0, #0x1
+ add sp, #0x74
+ pop {pc}
+
+ thumb_func_start FUN_020061E8
+FUN_020061E8: ; 0x020061E8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ cmp r5, #0x0
+ beq _0200620C
+ add r0, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02006202
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02006202:
+ mov r1, #0x0
+ add r2, r5, #0x0
+ blx FUN_020DF4A4
+ b _0200620E
+_0200620C:
+ mov r4, #0x0
+_0200620E:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200CA44
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200621C
+FUN_0200621C: ; 0x0200621C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B6C8
+ cmp r0, #0x0
+ beq _0200622C
+ bl FUN_02016A18
+_0200622C:
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02006234
+FUN_02006234: ; 0x02006234
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x28
+ bl FUN_02016998
+ add r3, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ str r0, [r3, #0x10]
+ str r0, [r3, #0x14]
+ str r4, [r3, #0x18]
+ str r0, [r3, #0x1c]
+ str r0, [r3, #0x20]
+ str r0, [r3, #0x24]
+ add r0, r3, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02006260
+FUN_02006260: ; 0x02006260
+ ldr r3, _02006264 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02006264: .word FUN_02016A18
+
+ thumb_func_start FUN_02006268
+FUN_02006268: ; 0x02006268
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r2, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006278
+FUN_02006278: ; 0x02006278
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_0200627C
+FUN_0200627C: ; 0x0200627C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200628C
+FUN_0200628C: ; 0x0200628C
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02006290
+FUN_02006290: ; 0x02006290
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x3
+ bhi _0200630E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020062A6: ; jump table (using 16-bit offset)
+ .short _020062AE - _020062A6 - 2; case 0
+ .short _020062C2 - _020062A6 - 2; case 1
+ .short _020062DA - _020062A6 - 2; case 2
+ .short _020062F0 - _020062A6 - 2; case 3
+_020062AE:
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _020062BE
+ mov r1, #0x2
+ bl FUN_02005FDC
+_020062BE:
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+_020062C2:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x2
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062DA:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x4]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x3
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062F0:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _0200630A
+ bl FUN_02005F60
+_0200630A:
+ mov r0, #0x1
+ pop {r4, pc}
+_0200630E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
diff --git a/asm/unk_02006864.s b/asm/unk_02006864.s
index b169a558..ebb81d3f 100644
--- a/asm/unk_02006864.s
+++ b/asm/unk_02006864.s
@@ -25156,7 +25156,7 @@ _02012598: .word 0x020ED3C8
thumb_func_start FUN_0201259C
FUN_0201259C: ; 0x0201259C
push {r3, lr}
- blx FUN_020D614C
+ blx RTC_Init
ldr r3, _020125CC ; =0x021C4808
mov r0, #0x0
add r2, r3, #0x0
diff --git a/asm/FUN_020C9C0C.s b/asm/unk_020C9C0C.s
index b103a702..c6cdac46 100644
--- a/asm/FUN_020C9C0C.s
+++ b/asm/unk_020C9C0C.s
@@ -3,8 +3,6 @@
.text
-
-
arm_func_start OS_WaitIrq
OS_WaitIrq:
stmdb sp!, {r4-r6,lr}
@@ -4344,9 +4342,11 @@ OS_GetProcMode: ; 0x020CD374
mrs r0, cpsr
and r0, r0, #0x1f
bx lr
-_020CD380:
+
+ arm_func_start OS_SpinWait
+OS_SpinWait:
subs r0, r0, #0x4
- bhs _020CD380
+ bhs OS_SpinWait
bx lr
arm_func_start OS_WaitVBlankIntr
@@ -13261,506 +13261,3 @@ _020D4AD8: .word 0x021D54AC
_020D4ADC: .word 0x021D54B0
_020D4AE0: .word 0x027FFF90
_020D4AE4: .word MicCommonCallback
-
- arm_func_start PM_DeletePostSleepCallback
-PM_DeletePostSleepCallback: ; 0x020D4AE8
- ldr ip, _020D4AF8 ; =0x020D4B78
- mov r1, r0
- ldr r0, _020D4AFC ; =0x021D54E0
- bx r12
- .balign 4
-_020D4AF8: .word 0x020D4B78
-_020D4AFC: .word 0x021D54E0
-
- arm_func_start PM_DeletePreSleepCallback
-PM_DeletePreSleepCallback: ; 0x020D4B00
- ldr ip, _020D4B10 ; =0x020D4B78
- mov r1, r0
- ldr r0, _020D4B14 ; =0x021D54D8
- bx r12
- .balign 4
-_020D4B10: .word 0x020D4B78
-_020D4B14: .word 0x021D54D8
-
- arm_func_start PM_AppendPostSleepCallback
-PM_AppendPostSleepCallback: ; 0x020D4B18
- ldr ip, _020D4B28 ; =FUN_020D4BC4
- mov r1, r0
- ldr r0, _020D4B2C ; =0x021D54E0
- bx r12
- .balign 4
-_020D4B28: .word FUN_020D4BC4
-_020D4B2C: .word 0x021D54E0
-
- arm_func_start PM_PrependPreSleepCallback
-PM_PrependPreSleepCallback: ; 0x020D4B30
- ldr ip, _020D4B40 ; =FUN_020D4C0C
- mov r1, r0
- ldr r0, _020D4B44 ; =0x021D54D8
- bx r12
- .balign 4
-_020D4B40: .word FUN_020D4C0C
-_020D4B44: .word 0x021D54D8
-
- arm_func_start PMi_ExecuteList
-PMi_ExecuteList: ; 0x020D4B48
- stmdb sp!, {r4,lr}
- movs r4, r0
- ldmeqia sp!, {r4,lr}
- bxeq lr
-_020D4B58:
- ldr r0, [r4, #0x4]
- ldr r1, [r4, #0x0]
- blx r1
- ldr r4, [r4, #0x8]
- cmp r4, #0x0
- bne _020D4B58
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start FUN_020D4B78
-FUN_020D4B78:
- cmp r0, #0x0
- bxeq lr
- ldr r3, [r0]
- mov r2, r3
- cmp r3, #0x0
- bxeq lr
-_020D4B90:
- cmp r3, r1
- bne _020D4BB0
- cmp r3, r2
- ldreq r1, [r3, #0x8]
- streq r1, [r0]
- ldrne r0, [r3, #0x8]
- strne r0, [r2, #0x8]
- bx lr
-_020D4BB0:
- mov r2, r3
- ldr r3, [r3, #0x8]
- cmp r3, #0x0
- bne _020D4B90
- bx lr
-
- arm_func_start FUN_020D4BC4
-FUN_020D4BC4: ; 0x020D4BC4
- cmp r0, #0x0
- bxeq lr
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- moveq r2, #0x0
- streq r2, [r1, #0x8]
- streq r1, [r0, #0x0]
- bxeq lr
- ldr r0, [r2, #0x8]
- cmp r0, #0x0
- beq _020D4C00
-_020D4BF0:
- mov r2, r0
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _020D4BF0
-_020D4C00:
- str r0, [r1, #0x8]
- str r1, [r2, #0x8]
- bx lr
-
- arm_func_start FUN_020D4C0C
-FUN_020D4C0C: ; 0x020D4C0C
- cmp r0, #0x0
- ldrne r2, [r0, #0x0]
- strne r2, [r1, #0x8]
- strne r1, [r0, #0x0]
- bx lr
-
- arm_func_start PM_GetLEDPattern
-PM_GetLEDPattern: ; 0x020D4C20
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020D4C58 ; =0x020D587C
- add r2, sp, #0x0
- bl PM_GetLEDPatternAsync
-_020D4C34:
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmnefd sp!, {lr}
- bxne lr
- bl PMi_WaitBusy
- ldr r0, [sp]
- add sp, sp, #0x4
- ldmfd sp!, {lr}
- bx lr
-_020D4C58: .word 0x020D587C
-
- arm_func_start PM_GetLEDPatternAsync
-PM_GetLEDPatternAsync:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl PMi_Lock
-_020D4C70:
- cmp r0, #0x0
- moveq r0, #0x1
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- ldr r1, _020D4CA4
- ldr r0, _020D4CA8
- str r5, [r1, #0x4]
- str r4, [r1, #0x8]
- str r6, [r1, #0xC]
- bl PMi_SendPxiData
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020D4CA4: .word 0x021D54E4
-_020D4CA8: .word 0x03006700
-
- arm_func_start PMi_SendLEDPatternCommand
-PMi_SendLEDPatternCommand: ; 0x020D4CAC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020D4CE4 ; =0x020D587C
- add r2, sp, #0x0
- bl PMi_SendLEDPatternCommandAsync
-_020D4CC0:
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmnefd sp!, {lr}
- bxne lr
- bl PMi_WaitBusy
- ldr r0, [sp]
- add sp, sp, #0x4
- ldmfd sp!, {lr}
- bx lr
-_020D4CE4: .word 0x020D587C
-
- arm_func_start PMi_SendLEDPatternCommandAsync
-PMi_SendLEDPatternCommandAsync:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl PMi_Lock
-_020D4CFC:
- cmp r0, #0x0
- moveq r0, #0x1
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- ldr r0, _020D4D34
- ldr r1, _020D4D38
- and r2, r6, #0xff
- orr r0, r2, r0
- str r5, [r1, #0x4]
- str r4, [r1, #0x8]
- bl PMi_SendPxiData
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020D4D34: .word 0x03006600
-_020D4D38: .word 0x021D54E4
-
- arm_func_start PM_GetLCDPower
-PM_GetLCDPower: ; 0x020D4D3C
- ldr r0, _020D4D54 ; =0x04000304
- ldrh r0, [r0, #0x0]
- ands r0, r0, #0x1
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
- .balign 4
-_020D4D54: .word 0x04000304
-
- arm_func_start PM_SetLCDPower
-PM_SetLCDPower: ; 0x020D4D58
- ldr ip, _020D4D74 ; =PMi_SetLCDPower
- mov r1, #0x0
- cmp r0, #0x1
- movne r0, #0x0
- mov r2, r1
- mov r3, #0x1
- bx r12
- .balign 4
-_020D4D74: .word PMi_SetLCDPower
-
- arm_func_start PMi_SetLCDPower
-PMi_SetLCDPower: ; 0x020D4D78
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r0, #0x0
- beq _020D4E00
- cmp r0, #0x1
- bne _020D4E4C
- cmp r2, #0x0
- bne _020D4DC0
- ldr r2, _020D4E5C ; =0x027FFC3C
- ldr r0, _020D4E60 ; =0x021D54DC
- ldr r2, [r2, #0x0]
- ldr r0, [r0, #0x0]
- sub r0, r2, r0
- cmp r0, #0x7
- addls sp, sp, #0x4
- movls r0, #0x0
- ldmlsia sp!, {lr}
- bxls lr
-_020D4DC0:
- cmp r1, #0x0
- beq _020D4DEC
- cmp r3, #0x0
- beq _020D4DDC
- mov r0, r1
- bl PMi_SetLED
- b _020D4DEC
-_020D4DDC:
- mov r0, r1
- mov r1, #0x0
- mov r2, r1
- bl PMi_SetLEDAsync
-_020D4DEC:
- ldr r1, _020D4E64 ; =0x04000304
- ldrh r0, [r1, #0x0]
- orr r0, r0, #0x1
- strh r0, [r1, #0x0]
- b _020D4E4C
-_020D4E00:
- ldr lr, _020D4E64 ; =0x04000304
- ldr r2, _020D4E5C ; =0x027FFC3C
- ldrh r12, [lr, #0x0]
- ldr r0, _020D4E60 ; =0x021D54DC
- cmp r1, #0x0
- bic r12, r12, #0x1
- strh r12, [lr, #0x0]
- ldr r2, [r2, #0x0]
- str r2, [r0, #0x0]
- beq _020D4E4C
- cmp r3, #0x0
- beq _020D4E3C
- mov r0, r1
- bl PMi_SetLED
- b _020D4E4C
-_020D4E3C:
- mov r0, r1
- mov r1, #0x0
- mov r2, r1
- bl PMi_SetLEDAsync
-_020D4E4C:
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D4E5C: .word 0x027FFC3C
-_020D4E60: .word 0x021D54DC
-_020D4E64: .word 0x04000304
-
- arm_func_start PM_GoSleepMode
-PM_GoSleepMode: ; 0x020D4E68
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x1c
- ldr r3, _020D5084 ; =0x021D54D8
- mov r10, r0
- ldr r0, [r3, #0x0]
- mov r9, r1
- mov r11, r2
- mov r8, #0x0
- bl PMi_ExecuteList
- ldr r1, _020D5088 ; =0x04000208
- mov r0, r8
- ldrh r4, [r1, #0x0]
- strh r0, [r1, #0x0]
- bl OS_DisableInterrupts
-_020D4EA0:
- str r0, [sp]
- ldr r0, _020D508C
- bl OS_DisableIrqMask
- str r0, [sp, #0x4]
- mov r0, #0x40000
- bl OS_SetIrqMask
- ldr r0, [sp]
- bl OS_RestoreInterrupts
- ldr r2, _020D5088
- mov r1, #0x1
- ldrh r0, [r2]
- ands r0, sl, #0x8
- strh r1, [r2]
- beq _020D4EE8
- ldr r0, _020D5090
- ldrh r0, [r0]
- cmp r0, #0x2
- biceq sl, sl, #0x8
-_020D4EE8:
- ands r0, sl, #0x10
- beq _020D4EFC
- bl CTRDG_IsExisting
- cmp r0, #0x0
- biceq sl, sl, #0x10
-_020D4EFC:
- ldr r0, _020D5094
- mov r1, #0x4000000
- ldr r7, [r1]
- ldr r6, [r0]
- bl PM_GetLCDPower
- str r0, [sp, #0x8]
- add r0, sp, #0xC
- add r1, sp, #0x10
- bl PM_GetBackLight
- mov r0, #0x2
- mov r1, #0x0
- bl FUN_020D526C
- ldr r2, _020D5098
- ldr r0, [r2]
- str r0, [sp, #0x14]
-_020D4F38:
- ldr r1, [r2]
- ldr r0, [sp, #0x14]
- cmp r0, r1
- beq _020D4F38
- ldr r0, [r2]
- mov r2, #0x4000000
- str r0, [sp, #0x14]
- ldr r0, [r2]
- ldr r1, _020D5094
- bic r0, r0, #0x30000
- str r0, [r2]
- ldr r0, [r1]
- bic r0, r0, #0x10000
- str r0, [r1]
- ldr r2, _020D5098
-_020D4F74:
- ldr r1, [r2]
- ldr r0, [sp, #0x14]
- cmp r0, r1
- beq _020D4F74
- ldr r0, [r2]
- str r0, [sp, #0x14]
- ldr r2, _020D5098
-_020D4F90:
- ldr r1, [r2]
- ldr r0, [sp, #0x14]
- cmp r0, r1
- beq _020D4F90
- ldr r0, [sp, #0xC]
- ldr r1, [sp, #0x10]
- orr r0, sl, r0, lsl #0x5
- orr r0, r0, r1, lsl #0x6
- mov r0, r0, lsl #0x10
- mov r5, r0, lsr #0x10
- orr r0, r9, fp
- mov r0, r0, lsl #0x10
- mov r9, r0, lsr #0x10
-_020D4FC4:
- mov r0, r5
- mov r1, r9
- bl PMi_SendSleepStart
- cmp r0, #0x0
- bne _020D4FC4
- bl OS_Halt
- ldr r0, _020D509C
- bl OS_SpinWait
- ands r0, sl, #0x8
- beq _020D4FFC
- ldr r0, _020D50A0
- ldr r0, [r0]
- ands r0, r0, #0x100000
- movne r8, #0x1
-_020D4FFC:
- cmp r8, #0x0
- bne _020D5040
- ldr r0, [sp, #0x8]
- cmp r0, #0x1
- bne _020D5028
- mov r0, #0x1
- mov r1, r0
- mov r2, r0
- mov r3, #0x0
- bl PMi_SetLCDPower
- b _020D5030
-_020D5028:
- mov r0, #0x1
- bl PMi_SetLED
-_020D5030:
- mov r1, #0x4000000
- ldr r0, _020D5094
- str r7, [r1]
- str r6, [r0]
-_020D5040:
- bl OS_DisableInterrupts
- ldr r0, [sp, #0x4]
- bl OS_SetIrqMask
- ldr r0, [sp]
- bl OS_RestoreInterrupts
- ldr r1, _020D5088
- cmp r8, #0x0
- ldrh r0, [r1]
- strh r4, [r1]
- beq _020D506C
- bl FUN_020D5180
-_020D506C:
- ldr r0, _020D50A4
- ldr r0, [r0]
- bl PMi_ExecuteList
- add sp, sp, #0x1C
- ldmia sp!, {r4-r11, lr}
- bx lr
-_020D5084: .word 0x021D54D8
-_020D5088: .word 0x04000208
-_020D508C: .word 0x003FFFFF
-_020D5090: .word 0x027FFC40
-_020D5094: .word 0x04001000
-_020D5098: .word 0x027FFC3C
-_020D509C: .word 0x00996A00
-_020D50A0: .word 0x04000214
-_020D50A4: .word 0x021D54E0
-
-
- arm_func_start PMi_SendPxiData
-PMi_SendPxiData: ; 0x020D50A8
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, #0x8
- mov r4, #0x0
-_020D50B8:
- mov r0, r5
- mov r1, r6
- mov r2, r4
- bl PXI_SendWordByFifo
-_020D50C8:
- cmp r0, #0
- bne _020D50B8
- ldmia sp!, {r4-r6, lr}
- bx lr
-
- arm_func_start PM_GetBackLight
-PM_GetBackLight: ; 0x020D50D8
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r5, r0
- add r1, sp, #0x0
- mov r0, #0x0
- bl PMi_ReadRegister
-_020D50F4:
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- cmp r5, #0x0
- beq _020D5120
- ldrh r1, [sp]
- ands r1, r1, #0x8
- movne r1, #0x1
- moveq r1, #0x0
- str r1, [r5]
-_020D5120:
- cmp r4, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- ldrh r1, [sp]
- ands r1, r1, #0x4
- movne r1, #0x1
- moveq r1, #0x0
- str r1, [r4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
diff --git a/global.inc b/global.inc
index a6ff40d0..dff8d688 100644
--- a/global.inc
+++ b/global.inc
@@ -396,12 +396,12 @@
.extern MIC_Init
.extern PM_GoSleepMode
.extern PM_GetBackLight
-.extern FUN_020D5150
-.extern FUN_020D5168
-.extern FUN_020D5180
+.extern PM_SetAmpGain
+.extern PM_SetAmp
+.extern PM_ForceToPowerOff
.extern FUN_020D526C
.extern FUN_020D5F40
-.extern FUN_020D614C
+.extern FUNRTC_Init
.extern FUN_020D6320
.extern FUN_020D6578
.extern FUN_020D660C
@@ -996,6 +996,65 @@
.extern FUN_020335B8
.extern FUN_02033678
.extern FUN_02033F70
+
+.extern PM_GetLCDPower
+.extern PXI_Init
+.extern PXI_IsCallbackReady
+.extern OS_GetCpsrIrq
+.extern PXIi_HandlerRecvFifoNotEmpty
+.extern OS_UnlockCard
+.extern OS_TryLockCard
+.extern OS_SleepThread
+.extern OS_CreateThread
+.extern OS_WakeupThread
+.extern OS_WakeupThreadDirect
+.extern PXI_SetFifoRecvCallback
+.extern OS_SetThreadPriority
+.extern FUN_02000B60
+.extern OS_GetDTCMAddress
+.extern IC_InvalidateRange
+.extern OS_ResetRequestIrqMask
+.extern MIi_CardDmaCopy32
+.extern PXI_SendWordByFifo
+.extern DC_StoreRange
+.extern OS_SendMessage
+.extern OS_ReceiveMessage
+.extern OS_ReadOwnerOfLockWord
+.extern OS_TryLockCartridge
+.extern FUN_020002FE
+.extern OS_SetIrqMask
+.extern MI_DmaCopy16
+.extern DC_FlushAll
+.extern OS_LockCartridge
+.extern OS_UnlockCartridge
+.extern OS_UnlockCartridge2
+.extern OS_ExitThread
+.extern MATH_SHA1Init
+.extern MATH_MD5Init
+.extern __destroy_global_chain
+.extern OS_TryLockMutex
+.extern _ddiv
+.extern _s32_div_f
+.extern _u32_div_not_0_f
+.extern OS_Halt
+.extern OS_InitMutex
+.extern PM_SetLCDPower
+.extern PMi_SendPxiData
+.extern _ll_mod
+.extern RTC_Init
+.extern OS_JamMessage
+.extern MI_DmaFill32
+.extern OS_InitMessageQueue
+.extern RTC_GetTime
+.extern OS_SetDPermissionsForProtectionRegion
+.extern MI_DmaCopy32
+.extern MATH_SHA1Update
+.extern MATH_SHA1GetHash
+.extern MATH_MD5Update
+.extern MATH_MD5GetHash
+.extern OS_LockMutex
+.extern OS_UnlockMutex
+
.extern FUN_02006930
.extern FUN_02006C08
.extern FUN_0200CA44
diff --git a/pokediamond.lcf b/pokediamond.lcf
index f8c76abf..19b80331 100644
--- a/pokediamond.lcf
+++ b/pokediamond.lcf
@@ -388,9 +388,14 @@ SECTIONS {
scrcmd.o (.text)
unk_02046030.o (.text)
rom1.5.o (.text)
- FUN_020C9C0C.o (.text)
- rom2.o (.text)
- /* rodata */
+ unk_020C9C0C.o (.text)
+ PM_arm9.o (.text)
+ RTC_arm9.o (.text)
+ CARD_arm9.o (.text)
+ WM_arm9.o (.text)
+ CTRDG_arm9.o (.text)
+ MATH_arm9.o (.text)
+ STD_arm9.o (.text)
rom2.o (.data)
string_util.o (.data)
rom2_2.o (.data)
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 09a3ce29..7aa125b8 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -291,9 +291,7 @@ FUN_020C9480 = 0x020C9480;
FUN_020C94E8 = 0x020C94E8;
FUN_020C9550 = 0x020C9550;
OS_SpinWait = 0x020CD380;
-FUN_020D5150 = 0x020D5150;
-FUN_020D5168 = 0x020D5168;
-FUN_020D5180 = 0x020D5180;
+PM_SetAmpGain = 0x020D5150;
FUN_020D526C = 0x020D526C;
PMi_SetLED = 0x020D5338;
PMi_SetLEDAsync = 0x020D5374;
@@ -303,7 +301,7 @@ PM_Init = 0x020D5764;
PMi_WaitBusy = 0x020D5884;
PMi_Lock = 0x020D58C4;
FUN_020D5F40 = 0x020D5F40;
-FUN_020D614C = 0x020D614C;
+FUNRTC_Init = 0x020D614C;
FUN_020D6320 = 0x020D6320;
FUN_020D6578 = 0x020D6578;
FUN_020D660C = 0x020D660C;
@@ -816,3 +814,4 @@ FUN_022567E0 = 0x022567E0;
SDK_AUTOLOAD_DTCM_START = 0x027E0000;
SDK_STATIC_BSS_END = 0x021D74E0;
gUnk027FFC20 = 0x027FFC20;
+FUN_02000B60 = 0x02000B60;